该return语句期望表达式作为其参数.这意味着如果您编写return expression,则expression返回评估值.
在这种特定情况下,Memory.value("game", "textbox") == 1是一个表达式,计算true返回值是否Memory.value("game", "textbox")等于1.如果Memory.value("game", "textbox")是一个不同于的值1,则表达式将计算为false,该return语句将返回.
您可以轻松地将给定的语句写为
if (Memory.value("game", "textbox") == 1) then
return true
else
return false
end
Run Code Online (Sandbox Code Playgroud)
但由于这在逻辑上是多余的,您可能希望避免编写此代码,而是使用您提供的一个衬垫.
return是一个关键字,并没有条件作为参数,而是一个表达式.如果你明确说明return它会返回.然而,它评估它的论点,即逻辑方面发挥作用的时候.
我将进入逻辑方面.
==是一个比较运算符,它检查它的参数是否相等.如果是这样,它返回true.因此,当在a中使用时return,return如果它们相等则将评估并返回true.
这不限于==,任何比较操作符(~=,<=,>=,<,>)会做同样的事情.
andor但是,工作方式有点不同.它们不会返回true/false.以下是他们的行为方式:
return a and b:这基本上评估a是否为真(既不是假也不是零)返回b
return a or b:这基本上转换为*如果a为真(既不是假也不是零)返回a,否则返回b
所以你可以想象,像return a and b or c手段一样
if a then
if b then
return b
else
return c
end
else
return c
end
Run Code Online (Sandbox Code Playgroud)
所以return a and b or c相当于return ((a and b) or c)
并且为了完成,not只需对其进行求值并将其反转,因此如果它为false/nil则返回true,否则返回false.