gpt4 book ai didi

lua - Lua中奇怪的返回声明

转载 作者:行者123 更新时间:2023-12-04 05:11:54 24 4
gpt4 key购买 nike

我正在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。因此,当在return中使用时,return将求值并在相等时返回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。

关于lua - Lua中奇怪的返回声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com