Lua中奇怪的返回声明

格里芬·杨(Griffin Young)

我正在Github上浏览一些Lua代码,在其中我看到一些类似的语句

return Memory.value("game", "textbox") == 1

这是否等于:

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

或这个?

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

return是关键字,没有条件作为参数,而是表达式。如果您明确声明return它将返回。但是,它会评估它的参数,这就是逻辑方面起作用的时候。

我将进入逻辑方面。

==是比较运算符,它检查其参数是否彼此相等如果是这样,则返回true。因此,当用于时returnreturn如果相等将求值并返回true。

这不限于==任何比较操作符(~=<=>=<>)会做同样的事情

andor但是工作原理略有不同。他们不返回true / false。它们的行为如下:

return a and b:这基本上是评估a是否为true(既不是false也不是nil)返回b

return a or b:这基本上转化为*如果a为true(既不是false也不是nil)则返回a,否则返回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)

为了完整起见,not只需对其求值并求反即可,因此,如果它为false / nil,则返回true,否则返回false。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在返回声明中未经检查的强制警告

来自分类Dev

奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息

来自分类Dev

然后在诺言中返回声明

来自分类Dev

ADFS从扩展属性返回声明

来自分类Dev

滥用的缺点等待返回声明?

来自分类Dev

Shell脚本中奇怪的“回声”行为

来自分类Dev

Lua中的if语句很奇怪

来自分类Dev

PHP奇怪的回声行为

来自分类Dev

奇怪的回声行为

来自分类Dev

PHP 回声中的回声

来自分类Dev

lua中的返回参数

来自分类Dev

lua中的返回参数

来自分类Dev

处理返回声明不一致的PyLint警告

来自分类Dev

Perl中数组声明的奇怪行为

来自分类Dev

Java ArrayList声明中的奇怪语法

来自分类Dev

数组声明中的Java奇怪语法

来自分类Dev

Lua库中的奇怪C语法

来自分类Dev

Lua中语法糖(冒号)的奇怪行为

来自分类Dev

在lua中,有向前声明吗?

来自分类Dev

奇怪的回声结果...它是从哪里来的?

来自分类Dev

返回选项时mapValues中的奇怪行为

来自分类Dev

bash 中奇怪的返回码行为

来自分类Dev

“where not in” - 最简单查询中的奇怪返回

来自分类Dev

回声返回数组而不是值

来自分类Dev

转换行,在Wordpress中回声内回声

来自分类Dev

如何在回声中回声(Twig)

来自分类Dev

涉及Lua中字符串比较的奇怪错误

来自分类Dev

涉及Lua中字符串比较的奇怪错误

来自分类Dev

使用 !回声中的字符