function go(...) for i,v in ipairs{...} do print(v) end end function goo(...) for i=1,select('#',...) do print(select(i,...)) end end go(5,nil,1) --5 goo(nil,1,5,9) --4行 nil,1,5,9 1,5,9 5,9 9
变长参数只要只用...代表就可以了,...代表一个数组吧
使用ipairs访问变长数组会遇到nil值就停止,如果参数中存在nil,那么后面的值将无法访问
使用select可以访问包含nil值,select('#',...)表示取这个数组的长度,select(1,...)表示返回第一个及后面所有,select(2,...)表示返回第二个及后面所有......所以要获取具体第几位的参数值,只需要一个临时变量来去承接返回来的第一个值,其他舍弃调就行了。