Lua 函数
Lua 函数主要有两种用途
- 完成指定任务。这种情况下函数作为调用语句使用
- 计算并返回值,这种情况下函数作为复制语句的表达式使用
函数定义
Lua 编程语句 函数定义格式:
optional_function_scope function function_name(argument1,argument2,argument3..,argumentn)
fuction_body
return result_params_comma_separated
end
解析:
- optional_function_scope:该参数是可选的制定函数 是全局函数还是 局部函数 默认是全局函数 如果要设置成局部函数 使用 local.
- function_name:函数名
- argument1: 函数参数,多个参数有逗号隔开,也可以不带参数
- fuction_body:函数体 函数中需要执行的代码语句块
- result_params_comma_separated: 函数返回值,Lua 语言 可以返回多个值,每个值 以逗号分隔开。
求 两个数中的 大值
function getMax(num1,num2)
if num1>num2
then
result=num1
else
result=num2
return result
end
end
print(getMax(2,6))
结果:6
可以将 函数作为参数 传递
myprint = function(param)
print("这是打印函数 - ##",param,"##")
end
function add(num1,num2,functionPrint)
result = num1 + num2
-- 调用传递的函数参数
functionPrint(result)
end
myprint(10)
-- myprint 函数作为参数传递
add(2,5,myprint)
结果:
这是打印函数 - ## 10 ##
这是打印函数 - ## 7 ##
多参数 返回
function maxiMum(a)
local mi=1
local m=a[mi]
for i,val in pairs(a) do
if val>m
then
mi=i
m=val
end
end
return mi,m;
end
print(maxiMum({1,3,4,5,63,4}))
结果: 5,65
可变参数 在函数参数列表中使用…表示函数有可变的参数 可将可变参数赋值给一个变量
可以通过select(#,…) 来获取可变参数的数量
function average(...)
result = 0
local arg={...} --> arg 为一个表,局部变量
for i,v in ipairs(arg) do
result = result + v
end
print("总共传入 " .. select(#arg,...).. " 个数")
return result/#arg
end
print("平均值为",average(10,5,3,4,5,6))
结果:
总共传入 6 个数
平均值为 5.5
有时候需要几个固定参数加上可变参数 ,固定参数必须放在变长参数之前
可以用select函数来访问变长参数:select(’#’,…)或者select(n,…)
- select(’#’,…) 返回可变参数的长度
- select(n,…) 用于访问 n到 select(’#’,…)的参数
do
function foo(...)
for i = 1,select('#',...) do -->获取参数总数
local arg = select(i, ...); -->读取参数
print("arg", arg);
end
end
foo(1, 2, 3, 4,'nil');
end
结果:
arg 1
arg 2
arg 3
arg 4
arg nil