定义:
function max(num1, num2) local result = 0 if (num1 > num2) then result = num1; else result = num2; end return result, "ok"; --> 可以返回多值 end
局部函数:在 require() 时,local 的函数不能被别的 script 调用,相当于 C++ 的 private。
local function max(num1, num2) local result = 0 if (num1 > num2) then result = num1; else result = num2; end return result; end
可变形参:
function add(str, ...) -- 固定参数必须放在变长参数之前 print("总共传入 " .. select("#",...) .. " 个数") -- 获得输入可变参数的数量 local s = 0 for i, v in ipairs{...} do --> {...} 表示一个由所有变长参数构成的数组 s = s + v end return s end print(add(3,4,5,6,7)) --->25
---- select 的用法
function foo(...) for i = 1, select('#', ...) do -->获取参数总数 local arg = select(i, ...); -->读取参数 rint("arg", arg); end end foo(1, 2, 3, 4); --------- result ---------- arg 1 arg 2 arg 3 arg 4
函数作为形参:
function sortTable(t, _f) -- _f 函数形参 table.sort(t, _f) end -- call function f(a1, a2) return a1 > a2 end v = {1,8,0,4,2,8,9,2} sortTable(v, f) -- f 函数变量
参考:
http://www.runoob.com/lua/lua-functions.html