a.多重返回值
Lua允许函数返回多个结果,只需在return关键字后列出所有的返回值即可
查找数组中的最大元素1
2
3
4
5
6
7
8
9
10
11
| function maximum(a)
local mi = 1 --最大值的索引
local m = a[mi] --最大值
for i,val in ipairs(a) do
if val>m then
mi = i; m=val
end
end
return m, mi
end
print (maximum({8,10,23,12,5})) -->23 3
|
b.变长参数
返回所有参数的总和1
2
3
4
5
6
7
8
| function add(...)
local s = 0
for i,v in ipairs({...}) do --ipairs({...})可以简写为ipairs{...}
s = s + v
end
return s
end
print(add(3,4,10,25,12)) -->54
|
表达式“…”的行为类似于一个具有多重返回值的函数,它返回的是当前函数的所有变长参数
c.具名参数
虽然Lua不支持
1
| rename(old="temp.lua", new="temp1.lua") --无效的演示代码
|
这样的语法,但是可以将所有的实参组织到一个table中,并将这个table作为唯一的实参传给函数。当实参只有一个table的构造式时,函数调用中的圆括号是可有可无的:
1
2
3
4
| function rename(arg)
return os.rename(arg.old, arg.new)
end
rename{old="temp.lua", new="temp1.lua"}
|