lua 检查多个值是否相等

我喜欢在 Roblox 制作游戏,使用 Lua 进行编码。在编写游戏时,我经常需要询问一个值是否等于另一个值,这样可以使代码变得非常冗长,并且可能会相当重复。

例如:

if x.ClassName == 'Shirt' or

x.ClassName == 'Accessory' or

x.ClassName == 'Pants' or

x.ClassName == 'CharacterMesh' then

-- 做某事

end 这不仅可能非常混乱,而且只是多次询问略有修改的相同问题。

我想知道在 Lua 中是否有一种方式来询问一个值是否等于多个不同的值。

例如:

if x.ClassName == ( 'Shirt' or 'Accessory' or 'Pants' or 'CharacterMesh' ) then

-- 做某事

end

点赞
用户134758
用户134758

在 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
2018-03-26 22:22:37
用户107090
用户107090

你可以像这样做:

if string.match'/Shirt/Accessory/Pants/CharacterMesh/''/' .. x.ClassName .. '/'then ... end

但这很可能比你现有的 if 语句链更快。

2018-03-26 22:24:19