gpt4 book ai didi

if-statement - Lua中奇怪的if语句

转载 作者:行者123 更新时间:2023-12-04 04:16:30 26 4
gpt4 key购买 nike

好的,所以我是 Lua 语言的新手,所以这可能是一个 super 愚蠢的问题,但是我遇到了以下语句,我不知道它是什么意思(即使经过一些搜索)

if (...) then

-- Doing some stuff

end
... 是什么意思意思是?

最佳答案

...用于vararg functions .它的值是所有“额外”参数的列表(即当前函数的最后一个命名参数之后的参数。)
(...) (与括号中的任何其他表达式一样)将结果调整为一个值(列表中的第一个值。)

这样if声明实际上意味着“如果第一个可变参数存在并且不是 falsenil 。”

例子:

local function f1(...)
if (...) then
return true
else
return false
end
end

local function f2(x, ...)
if (...) then
return true
else
return false
end
end

print(f1()) -- false
print(f1(1)) -- true
print(f1(1, 2)) -- true
print(f1(1, nil)) -- true
print(f1(nil, 2)) -- false

print(f2()) -- false
print(f2(1)) -- false
print(f2(1, 2)) -- true
print(f2(1, nil)) -- false
print(f2(nil, 2)) -- true

在顶层(即不在 function . . . end 表单内)它仍然以相同的方式工作,但当前函数是一个 block (即脚本或模块。)

如果是模块, (...)给出模块名称。但随后 if(...) test 没有用,因为第一个参数总是一个字符串。

如果是脚本, (...)给出第一个命令行参数( if(...) 测试是否给出了任何参数。)

关于if-statement - Lua中奇怪的if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20014044/

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