Lua中可返回多个参数,C#只能返回一个
代码语言:javascript复制function test(...)
print(arg)
--print(arg[2])
end
test()
test(1)
test(1,2)
test(1,2,3)
>lua -e "io.stdout:setvbuf 'no'" "table.lua"
table: 003BB0B8
table: 003BB1A8
table: 003BB248
table: 003BB310
>Exit code: 0
arg将我们传递的参数封装成一个表(表内含有输入的参数和所有参数的个数),输出的为该参数的内存地址
将arg定义为arg={...} 便解决了这个问题。此时,这个表里只有输入的参数
代码语言:javascript复制function test(...)
--local arg={...}
res=0
for k,v in pairs(arg) do
res=res v
end
print(res)
end
test()
test(1)
test(1,2)
test(1,2,3)
>lua -e "io.stdout:setvbuf 'no'" "table.lua"
0
2
5
9
>Exit code: 0
代码语言:javascript复制function test(...)
local arg={...}
res=0
for k,v in pairs(arg) do
res=res v
end
print(res)
end
test()
test(1)
test(1,2)
test(1,2,3)
>lua -e "io.stdout:setvbuf 'no'" "table.lua"
0
1
3
6
>Exit code: 0
arg的用法
除了上述的可用于遍历,获得表中传入的内容,还可用#arg获得传入参数的个数
同时,#“string”也可取得一个字符串的长度
代码语言:javascript复制function test(...)
local arg={...}
res=0
for k,v in pairs(arg) do
res=res v
end
print(res.." "..#arg)
end
test()
test(1)
test(1,2)
test(1,2,3)
>lua -e "io.stdout:setvbuf 'no'" "table.lua"
0 0
1 1
3 2
6 3
>Exit code: 0
大家还有什么问题,欢迎在下方留言!