Луа проверяет несколько значений на равенство
Мне нравится делать игры в Roblox, а я пишу в lua. Хорошо программируя игры, я спрашиваю себя, равно ли значение другому значению много, и оно может создавать действительно длинные строки кода и может быть довольно повторяющимся.
Например:
если x.ClassName == 'Рубашка' или
x.ClassName == 'Аксессуар' или
x.ClassName == 'Штаны' или
x.ClassName == 'CharacterMesh' тогда
- делать вещи
конец
делать это не только может быть очень грязно, но и просто просить одно и то же снова и снова, слегка изменяя.
Мне было интересно, есть ли способ в lua спросить, равно ли значение нескольких различных значений
Например:
если x.ClassName == ("Рубашка" или "Аксессуар" или "Штаны" или "Персонаж"), то
- делать вещи
конец
2 ответа
В 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.