Lua 中 函数 的参数是支持可变参数的,即函数参数的个数是任意的,最典型的可变参数的就是系统内置的 print 函数。
在 Lua 中,函数的可变参数使用 ...
来表示。我们要获取用户传入的所有的参数,可以使用 arg 变量。
function function_name(...)
-- arg
end
在 Lua 中,函数可变参数使用 ...
表示,要获取用户传入的所有参数,使用 arg 变量。但是在 lua 5.1 以后,不再使用这种处理方式,它不会再为每一个可变长参数生成一个 table;如果我们还想要使用 arg,我们最好使用如下写法:
function func(...)
local arg={...}
end
这些点(…)表明这个函数有一个可变长参数。它所有的参数存储在一个单独的 table,在函数内,可以通过 arg 访问。
arg 有一个额外的字段 :n
,表示参数的个数:
function myprint (...)
for i,v in pairs(arg) do
printResult = printResult .. tostring(v) .. "\t"
end
print(arg.n) --4
printResult = printResult .. "\n"
end
myprint(1,0,"a",true)
print(printResult) --1 0 a true 4,最后一个为n
用函数可变参数,实现求任意变量的和
#!/usr/bin/lua
print("haicoder(www.haicoder.net)\n")
function sum(...)
local result = 0
local arg = {...}
for i, v in ipairs(arg) do
result = result + v
end
return result
end
result = sum(1, 3, 5, 7, 9)
print(string.format("result = %d", result))
程序运行后,控制台输出如下:
我们定义了一个函数 sum,该函数的参数是一个可变参数。接着,我们使用该可变参数,实现了求出我们传入的所有数的和。
同时,我们可以看到,要获取所有的传入的参数,我们可以使用 arg 变量。
Lua 中函数的参数是支持可变参数的,即函数参数的个数是任意的,最典型的可变参数的就是系统内置的 print 函数。
在 Lua 中,函数的可变参数使用 ...
来表示。我们要获取用户传入的所有的参数,可以使用 arg 变量。