Lua丨函数中的可变参数(返回多个参数)~arg的用法
可变参数
Lua中可返回多个参数,C#只能返回一个
function test(...)print(arg)--print(arg[2])endtest()test(1)test(1,2)test(1,2,3)>lua -e "io.stdout:setvbuf 'no'" "table.lua"table: 003BB0B8table: 003BB1A8table: 003BB248table: 003BB310>Exit code: 0

arg将我们传递的参数封装成一个表(表内含有输入的参数和所有参数的个数),输出的为该参数的内存地址
将arg定义为arg={...} 便解决了这个问题。此时,这个表里只有输入的参数
function test(...)--local arg={...}res=0for k,v in pairs(arg) dores=res+vendprint(res)endtest()test(1)test(1,2)test(1,2,3)>lua -e "io.stdout:setvbuf 'no'" "table.lua"0259>Exit code: 0
function test(...)local arg={...}res=0for k,v in pairs(arg) dores=res+vendprint(res)endtest()test(1)test(1,2)test(1,2,3)>lua -e "io.stdout:setvbuf 'no'" "table.lua"0136>Exit code: 0
arg的用法
除了上述的可用于遍历,获得表中传入的内容,还可用#arg获得传入参数的个数
同时,#“string”也可取得一个字符串的长度
function test(...)local arg={...}res=0for k,v in pairs(arg) dores=res+vendprint(res.."+"..#arg)endtest()test(1)test(1,2)test(1,2,3)>lua -e "io.stdout:setvbuf 'no'" "table.lua"0+01+13+26+3>Exit code: 0
赞 (0)

