定义:
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 1arg 2arg 3arg 4
函数作为形参:
function sortTable(t, _f) -- _f 函数形参 table.sort(t, _f)end -- callfunction f(a1, a2) return a1 > a2endv = {1,8,0,4,2,8,9,2}sortTable(v, f) -- f 函数变量
参考:
http://www.runoob.com/lua/lua-functions.html