If statement Lua中奇怪的if语句
好吧,我是Lua语言的新手,所以这可能是一个超级愚蠢的问题,但我遇到了下面的语句,我不知道它的意思(即使经过一些搜索)If statement Lua中奇怪的if语句,if-statement,lua,If Statement,Lua,好吧,我是Lua语言的新手,所以这可能是一个超级愚蠢的问题,但我遇到了下面的语句,我不知道它的意思(即使经过一些搜索) ..是什么意思?..在中使用。它的值是所有“额外”参数(即当前函数最后一个命名参数后面的参数)的列表 (…)(与括号中的任何其他表达式一样)将结果调整为一个值(列表中的第一个值) 因此,if语句实际上意味着“如果第一个变量参数存在并且不是false或nil” 示例: local function f1(...) if (...) then return true
..
是什么意思?..
在中使用。它的值是所有“额外”参数(即当前函数最后一个命名参数后面的参数)的列表
(…)
(与括号中的任何其他表达式一样)将结果调整为一个值(列表中的第一个值)
因此,if
语句实际上意味着“如果第一个变量参数存在并且不是false
或nil
”
示例:
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
在顶层(即不在函数内部…end
表单),它仍然以相同的方式工作,但当前函数是一个块(即脚本或模块)
如果是模块,(…)
给出模块名称。但是,if(…)
测试将不会有用,因为第一个参数始终是字符串
如果是脚本,
(…)
给出第一个命令行参数(并且If(…)
测试是否给出了任何参数)。…
在函数参数中用于指示函数是可变的。它可以在函数内部用作表达式,表示函数的额外参数
例如,此函数采用固定参数加变量参数:
function vafun(num, ...)
if (...) then
for _, v in ipairs{...} do
print(v)
end
else
print("empty var")
end
end
if(…)
测试变量参数部分是否为空
vafun(3, 4, 5)
vafun(3)
vafun()
输出:
4
5
empty var
empty var
请看,我会注意到,if(…)那么
的作用与if。。。然后
,因为语句本身会将列表调整为一个元素。
4
5
empty var
empty var