我在Github上浏览一些Lua代码,在那里我看到了return Memory.value("game", "textbox") == 1
等几个语句
这是“相等”return if value ==1
还是if value == 1 return true, else return false
?
答案 0 :(得分:9)
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
但是,由于这在逻辑上是多余的,您可能希望避免编写此代码,而是使用您提供的一个衬垫。
答案 1 :(得分:5)
你的问题是你知道Perl。不,它不像Perl,其中“if”和类似语句的条件可以遵循该语句。
return
需要一个零个或多个返回值的列表。函数可以返回任何长度列表。它也可以有任意数量的return语句,并且它们不需要返回相同长度或含义的列表。因此,函数的文档是必不可少的。请参阅load作为示例。
此语句返回true
或false
。
它将Memory引用的值视为表,使用“value”对其进行索引,将结果值作为具有两个字符串参数的函数调用,并将函数调用的结果与值1进行比较。
答案 2 :(得分:5)
return
是一个关键字,没有条件作为参数,而是一个表达式。如果您明确说明return
它将返回。然而,它会评估它的论点,即逻辑方面发挥作用的时候。
我将进入逻辑方面。
==
是一个比较运算符,它检查它的参数是否等于彼此。如果是这样,它返回true。因此,当在return
中使用时,return
将评估并在它们相等时返回true。
这不仅限于==
,任何比较运算符(~=
,<=
,>=
,<
,{ {1}})将完成完全相同的事情。
>
,and
的工作方式略有不同。它们不会返回true / false。以下是他们的行为方式:
or
:如果a为真(无误或无)返回b
return a and b
:这基本上转换为*如果a为真(既不是假也不是零)返回a,否则返回b
你可以想象,像return a or b
这样的东西意味着
return a and b or c
因此if a then
if b then
return b
else
return c
end
else
return c
end
相当于return a and b or c
为了完成,return ((a and b) or c)
只需对其进行求值并将其反转,所以如果它为false / nil则返回true,否则返回false。