为什么这个布尔值在所有条件下总是为零?

Del*_*Web 1 arrays null lua if-statement

所以我刚刚开始学习 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
Run Code Online (Sandbox Code Playgroud)

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

注意:randomText 是一个随机表项字符串,等于以下值之一:

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

我当前的问题是,对于所有正确的情况,总是返回一个 nil 值。所有其他变量都不为零。

有什么想法会导致这种情况吗?

Mud*_*Mud 5

“Biggerthan”、“Biggerthan”、“biggerthan”和“biggerthan”都是不同的字符串。


有关您的代码的更多信息:

if number > randomNumber then
    correct = true;
end
return correct;
Run Code Online (Sandbox Code Playgroud)

布尔表达式的number > randomNumber计算结果为trueor false。如果计算结果为true,则将变量设置为true。您可以通过直接使用表达式的结果来简化这一过程:

correct = number > randomNumber
return correct
Run Code Online (Sandbox Code Playgroud)

鉴于您立即返回结果,您甚至不需要该变量。你可以这样写:

return number > randomNumber
Run Code Online (Sandbox Code Playgroud)

所以你的代码可以这样写:

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
Run Code Online (Sandbox Code Playgroud)