为什么这个布尔值在所有条件下始终是空值?

我刚开始学习lua,并在Corona SDK中的一个小游戏脚本上工作,但该脚本的一部分是纯lua。

以下是一些代码:

function checkNumAndExp(number)
local correct;
    if randomText == "bigger than " then
        if number > randomNumber then
            correct = true;
        end
      return correct;
    elseif randomText == "smaller than " then
        if number < randomNumber then
            correct = true;
        end
     return correct;
    elseif randomText == "multiples of " then
        if number%randomNumber == 0 then
            correct = true;
        end
      return correct;
    elseif randomText == "divisible by " then
        if number%randomNumber == 0 then
            correct = true;
            return correct;
        end
    else
      correct = false;
      return correct ;
    end

end

我想做的是检查给定数字是否大于或小于...在开头生成的随机数字。

注:randomText是随机表项字符串,等于这些值之一:

  1. 大于
  2. 小于
  3. 的倍数
  4. 可被整除

我的当前问题是,对于所有情况,correct始终返回nil值。所有其他vars都不是nil。

有什么想法是什么原因导致这种情况?

点赞
用户501459
用户501459

"Bigger than", "Bigger than ", "bigger than", and "bigger than " 是四个不同的字符串。


关于你的代码:

if number > randomNumber then
    correct = true;
end
return correct;

布尔表达式 number > randomNumber 的计算结果为 truefalse。如果它计算为 true,你重新将一个变量设为 true。你可以直接使用表达式的结果来简化代码:

correct = number > randomNumber
return correct

考虑到你立即返回结果,你甚至都不需要变量。你可以直接写:

return number > randomNumber

因此,你的代码可以这样写:

function checkNumAndExp(number)
    if randomText == "bigger than " then
        return number > randomNumber
    elseif randomText == "smaller than " then
        return number < randomNumber
    elseif randomText == "multiples of " then
        return number%randomNumber == 0
    elseif randomText == "divisible by " then
        return number%randomNumber == 0
    end
    return false
end
2015-10-20 19:55:26