如何避免过度使用OR?

这是我的代码:

repeat

  ...

  print("你想再做一次吗?")
  answer = io.read()
until answer == "不" or answer == "n" or answer == "没有"

显然,“没有”这个选项可能有些陈词滥调,但问题仍然存在:如何避免过多地使用 OR 运算符?是否有一种方法,可以将所有可能的比较值放入列表中,并将该列表与给定的字符串进行比较?

点赞
用户438753
用户438753

你可以使用函数来处理列表,例如

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。

2014-03-19 21:42:24
用户33252
用户33252

正如lhf所说,你提供的代码非常简单。但是如果你要为几组单词或更大的集合做这个操作,你可能想要使用Lua表格作为集合。 这是一个例子:

is_no = {["no"] = true; ["n"] = true; ["nope"] = true;}

repeat
    -- ...
    print("你想再做一次吗?")
    answer = io.read()
until is_no [answer]
2014-03-19 22:28:59