LUA拾翠
一、函数
1、格式
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)
function_body
return result_params_comma_separated
end
2、多返回值
Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil)。
> s, e = string.find("www.runoob.com", "runoob")
> print(s, e)
5 10
3、多返回值
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
4、可变参数
function add(...) {...} 表示一个由所有变长参数构成的数组
local s = 0
for i, v in ipairs{...} do --> {...} 表示一个由所有变长参数构成的数组
s = s + v
end
return s
end
print(add(3,4,5,6,7)) --->25
我们可以将可变参数赋值给一个变量
function average(...)
result = 0
local arg={...} --> arg 为一个表,局部变量
for i,v in ipairs(arg) do
result = result + v
end
print("总共传入 " .. #arg .. " 个数")
return result/#arg
end
#arg --这个是参数的数量
获取可变参数的数量select("#",...)
function average(...) result = 0 local arg={...} for i,v in ipairs(arg) do result = result + v end
print("总共传入 " .. select("#",...) .. " 个数")
return result/select("#",...)
end
print("平均值为",average(10,5,3,4,5,6))
-----------------------------------固定参数+可变参数----------------------
function fwrite(fmt, ...) ---> 固定的参数fmt return io.write(string.format(fmt, ...)) end fwrite("runoob\n") --->fmt = "runoob", 没有变长参数。 fwrite("%d%d\n", 1, 2) --->fmt = "%d%d", 变长参数为 1 和 2
利用select('#',...)--返回可变参数的个数
select(n,...)-------返回第n个可变参数
do function foo(...) for i = 1, select('#', ...) do -->获取参数总数 local arg = select(i, ...); -->读取参数 print("arg", arg); end end foo(1, 2, 3, 4); end