这是我的代码:
repeat
...
print("would you like to do that again?")
answer = io.read()
until answer == "no" or answer == "n" or answer == "nope"
显然使用" nope"是陈腐的,但重点是:我如何避免使用OR太多?有没有办法将所有可能的比较值放在一个列表中,并将所述列表与给定的字符串进行比较?
答案 0 :(得分:4)
正如lhf所说,您提供的代码非常简单。但是,如果您为多组单词或更大的集合执行此操作,则可能需要将Lua表用作集合。这是一个例子:
is_no = { ["no"]= true; ["n"]= true; ["nope"]= true; }
repeat
-- ...
print("would you like to do that again?")
answer = io.read()
until is_no[answer]
答案 1 :(得分:2)
您可以使用函数来处理列表,例如
function inList(value,list)
value = value:lower()
for k,v in ipairs(list) do
if v == value then
return true
end
end
return false
end
print(inList('yes',{'no','nope','n'}))
if inList('No',{'no','nope','n'}) then
print('Is in List')
end
它比您已经使用的简单OR语句更加处理器处理器,但如果您需要处理大量变体,可能会更容易。我包括:lower命令所以No,NOPE等也会返回true。