从if语句到if elseif语句循环的LUA

时间:2019-03-08 16:57:26

标签: lua

function checkCurrency(checker)
  return (checker % 2 == 0)
end

local currency1 = 105
local currency2 = 110
local currency3 = 115


if(checkCurrency(currency1) == true) then
      print("yes1")
elseif(checkCurrency(currency2) == true) then
      print("yes2")
elseif(checkCurrency(currency3) == true) then
      print("yes3")
else
      print("no currency available")
end

我的代码想法是循环遍历100种货币,而不是像编写货币1,currency2等那样写几行相同的确切代码,就像数学公式一样,因为如您所见,货币上升了每次5,因此起点为105,终点应为500。如果两者都不匹配,则应在结尾处添加else语句。

我的最初想法是:

function checkCurrency(checker)
  return (checker % 2 == 0)
end

for i = 105,500,5 
do 
   if(i == 105) then 
       if(checkCurrency(i) == true) then
          print("yes" .. i)
   end
   if(i ~= 105 and i ~= 500) then 
       elseif(checkCurrency(i) == true) then
          print("yes" .. i)
   end
   if(i == 500) then
      print("no currency available")
   end

end

但是不可能,因为它试图结束第二条if语句而不是第一条if语句,因此我不知道如何以安全的方式解决此问题,任何技巧或示例都是一个不错的开始。我也不想检查每一行,如果它适用于示例currency5,它应该停止,就像带有if,elseif和end语句的第一个代码一样。因此它不会遍历500种货币并浪费资源。

2 个答案:

答案 0 :(得分:3)

您有多个语法错误:

  • 您需要end嵌套的if(第8行的if由第10行的end end组成),同时查看列表时您希望它end外部if
  • 如果您之前没有同一级别的elseif(第12行),则不能使用if

通用解决方案如下所示:

local valid
for i=105,500,5
do
    if(checkCurrency(i)) then
        valid=i
        break
    end
end
if (not valid) then 
    print("no currency available")
else
    print("Found " .. valid)
end

答案 1 :(得分:2)

使用循环查找匹配的货币。将该货币存储在变量中。使用break退出循环。然后使用if-else使用该货币进行业务。

local function checkCurrency(checker)
  return checker % 2 == 0
end

local currency
for i = 105, 499, 5 do
  if checkCurrency(i) then
    currency = i
    break
  end
end

if currency then
  print('yes' .. currency)
else
  print("no currency available")
end