使用if语句到elseif语句循环的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("没有可用的货币")
end

我代码的思想是循环遍历100种货币,但不想写currency1、currency2等,而是希望有一个类似数学公式的代码,因为你可以看到,货币每次增加5,所以有一个起始点为105,结束点应该是500。如果没有匹配项,应该在最后抛出一个else语句。

我最初的想法是:

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

for i = 105500,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("没有可用的货币")
   end

end

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

点赞
用户1678362
用户1678362

你有多个语法错误:

  • 你需要结束嵌套的 if(第 8 行的 if 由第 10 行的 end 结束,但是根据缩进你期望它结束外部的 if
  • 如果你在同一级别没有先前的 if,则不能使用 elseif(第 12 行)

一个通用的解决方案可能是这样的:

local valid
for i=105,500,5
do
    if(checkCurrency(i)) then
        valid=i
        break
    end
end
if (not valid) then
    print("无可用货币")
else
    print("找到 " .. valid)
end
2019-03-08 17:18:10
用户3574628
用户3574628

使用循环仅查找匹配的货币。将该货币存储在变量中。使用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("没有可用的货币")
end
2019-03-08 17:20:21