lua函数
Posted guoew
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua函数相关的知识,希望对你有一定的参考价值。
1. 函数定义
lua 使用function定义函数,语法如下:
function fun_name(args) --args表示参数列表,函数的参数列表可以为空
--body
end
上面方法定义了一个全局函数,为了不污染命名空间,同时减少性能损耗,应该尽量使用局部函数,方法如下(只要在function前面加local 声明即可)
local function fun_name(args) --args表示参数列表,函数的参数列表可以为空
--body
end
2. 函数参数
函数传参几个规则
1. 若参数个数大于形参个数,从左向右,多余的实参被忽略
2. 若参数个数小于形参个数,从左向右,没有被初始化的形参被初始化为nil
3. lua支持变长参数。用...表示,在参数列表后面。一个可变长参数不会有一个对应参数列表。他会收集所有的参数放进一个变参表达式里(...)。这个表达式的值表示所有参数值。它与函数多返回值的那种情况是相似的。如果一个变参表达式在是其他表达式内部或在一些表达式的中间,他只返回是一个元素,例如: local cc,dd,ee = a,...,34。 如果这个表达式是在表达式列表的最后一个,他不会对参数进行调和除非用一个括号。
例如有如下三个函数
function f(a,b) end
function g(a,b,...) end
function r() return 1,2,3 end
传入的参数与参数映射如下
CALL PARAMETERS
f(3) a=4,b=nil --没有为b传值则b为nil
f(4,5) a=4,b=5 --参数一一对应
f(3,4,5) a=3,b=4 --多余参数无作用
f(r(),10) a=1,b=10 --可变参数在中间,表达式的值则是第一个变参列表元素
f(r()) a=1,b=2 -- 可变参数在最后不受影响
g(3) a=3,b=nil, ... -->(nothing) --b参数和...参数都没有传参数则为nil
g(3,4) a=3,b=4, ... -->(nothing) --没有为可变参数传参则为nil
g(3,4,5,6) a=3,b=4, ... -->5 6 --可变参数为最后一个,则自动收集参数列表到可变参数
g(5,r()) a=5,b=1, ... -->2,3 --第二个参数b传的是一个可变参,则b为可变参数的第一个元素。第三个参数是个可变参,它取可变参的剩余参数
3. 函数范例
如下定义一个max函数,参数为n1,n2,用于比较两数值的大小
function max(num1,num2)
if (num1>num2) then
result = num1
else
result = num2
end
return result
end
print("两值比较最大值为",max(10,10))
致谢!
以上是关于lua函数的主要内容,如果未能解决你的问题,请参考以下文章