如何避免过度使用OR?

时间:2014-03-19 19:56:32

标签: lua

这是我的代码:

repeat

  ...

  print("would you like to do that again?")
  answer = io.read()
until answer == "no" or answer == "n" or answer == "nope"

显然使用" nope"是陈腐的,但重点是:我如何避免使用OR太多?有没有办法将所有可能的比较值放在一个列表中,并将所述列表与给定的字符串进行比较?

2 个答案:

答案 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。