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 链更快。