lua 检查多个值是否相等
lua checking multiple values for equailty
我喜欢在 Roblox 中制作游戏并在 lua 中编写代码。好的编码游戏我发现自己经常问一个值是否等于另一个值,这可能会产生很长的代码行并且可能会非常重复。
例如:
if x.ClassName == 'Shirt' or
x.ClassName == 'Accessory' or
x.ClassName == 'Pants' 或
x.ClassName == 'CharacterMesh' 然后
-- 做事
结束
这样做不仅会很乱,而且只是一遍又一遍地问同样的事情,稍微修改一下。
我想知道是否有lua 中询问一个值是否等于多个不同的单独值的方法
例如:
if x.ClassName == ( 'Shirt' or 'Accessory' or 'Pants' or 'CharacterMesh' ) then
-- do thing
end
在 Lua 中没有执行此操作的本地方法,但您可以实现辅助函数 set
来实现此目的。
function set(...)
local ret = {}
for _,k in ipairs({...}) do ret[k] = true end
return ret
end
local classname = 'Shirt'
if set('Shirt', 'Accessory', 'Pants', 'CharacterMesh')[classname] then
print('true')
end
你可以这样做:
if string.match('/Shirt/Accessory/Pants/CharacterMesh/', '/'..x.ClassName..'/') then ... end
但它不太可能比您拥有的 if 链更快。
我喜欢在 Roblox 中制作游戏并在 lua 中编写代码。好的编码游戏我发现自己经常问一个值是否等于另一个值,这可能会产生很长的代码行并且可能会非常重复。
例如:
if x.ClassName == 'Shirt' or
x.ClassName == 'Accessory' or
x.ClassName == 'Pants' 或
x.ClassName == 'CharacterMesh' 然后
-- 做事
结束
这样做不仅会很乱,而且只是一遍又一遍地问同样的事情,稍微修改一下。
我想知道是否有lua 中询问一个值是否等于多个不同的单独值的方法
例如:
if x.ClassName == ( 'Shirt' or 'Accessory' or 'Pants' or 'CharacterMesh' ) then
-- do thing
end
在 Lua 中没有执行此操作的本地方法,但您可以实现辅助函数 set
来实现此目的。
function set(...)
local ret = {}
for _,k in ipairs({...}) do ret[k] = true end
return ret
end
local classname = 'Shirt'
if set('Shirt', 'Accessory', 'Pants', 'CharacterMesh')[classname] then
print('true')
end
你可以这样做:
if string.match('/Shirt/Accessory/Pants/CharacterMesh/', '/'..x.ClassName..'/') then ... end
但它不太可能比您拥有的 if 链更快。