Lua中奇怪的return语句

Lua中奇怪的return语句,lua,Lua,我正在Github上浏览一些Lua代码,在那里我看到了如下语句 return Memory.value("game", "textbox") == 1 这是否等于: 还是这个 if Memory.value("game", "textbox") == 1 then return true else return false end return语句需要一个表达式作为其参数。这意味着,如果编写返回表达式,则将返回表达式的计算值 在这种特定情况下,Memory.value(“游戏

我正在Github上浏览一些Lua代码,在那里我看到了如下语句

return Memory.value("game", "textbox") == 1
这是否等于:

还是这个

if Memory.value("game", "textbox") == 1 then
    return true
else
    return false
end

return
语句需要一个表达式作为其参数。这意味着,如果编写
返回表达式
,则将返回表达式的计算值

在这种特定情况下,
Memory.value(“游戏”、“文本框”)==1
是一个表达式,如果
Memory.value(“游戏”、“文本框”)
的返回值等于
1
,则该表达式的计算结果为
true
。如果
Memory.value(“game”、“textbox”)
是一个不同于
1
的值,则表达式将计算为
false
,这就是
return
语句将返回的值

您可以很容易地将给定的语句写成

if (Memory.value("game", "textbox") == 1) then
    return true
else
    return false
end

但是,由于这在逻辑上是多余的,您应该避免编写此代码,而是使用您提供的一行程序。

您的问题表明您了解Perl。不,它不像Perl,在Perl中,'if'和类似语句的条件可以跟在语句后面

return
需要一个包含零个或多个返回值的列表。函数可以返回任意长度的列表。它还可以有任意数量的返回语句,它们不需要返回相同长度或含义的列表。因此,函数的文档是必不可少的。请看一个例子

此语句返回
true
false


它将内存引用的值视为一个表,用“value”对其进行索引,将结果值作为带有两个字符串参数的函数调用,并将函数调用的结果与值1进行比较

return
是一个关键字,没有条件作为参数,而是一个表达式。如果您明确声明
return
,它将返回。然而,当逻辑方面发挥作用时,它会评估它的参数

我将进入逻辑方面

=
是一个比较运算符,它检查其参数是否彼此相等。如果是,则返回true。因此,当在
返回
中使用时,
返回
将求值并返回true(如果它们相等)

这不限于
=
任何比较运算符(
~=
=
)都将执行完全相同的操作

的工作原理略有不同。它们不会返回真/假。以下是他们的行为:

返回a和b
:这基本上是计算a是否为真(既不是假也不是零)返回b

返回a或b
:这基本上转换为*如果a为真(既不是假也不是零),则返回a,否则返回b

正如您所想象的,类似于
返回a和b或c的内容意味着

if a then
    if b then
       return b
    else
       return c
    end
else
    return c
end
因此
返回a和b或c
等同于
返回((a和b)或c)

为了完成,
not
只是对其求值并将其反转,因此如果为false/nil,则返回true,否则返回false

if a then
    if b then
       return b
    else
       return c
    end
else
    return c
end