在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。
Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。
Lua 函数主要有两种用途:
Lua 编程语言函数定义格式如下:
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn) |
function_body |
return result_params_comma_separated |
end |
解析:
optional_function_scope
local
。
function_name:
argument1, argument2, argument3..., argumentn:
function_body:
result_params_comma_separated:
以下实例定义了函数 max()
,参数为 num1, num2,用于比较两值的大小,并返回最大值:
--[[ 函数返回两个值的最大值 --]] |
function max(num1, num2) |
if (num1 > num2) then |
result = num1; |
else |
result = num2; |
end |
return result; |
end |
-- 调用函数 |
print("两值比较最大值为 ",max(10,4)) |
print("两值比较最大值为 ",max(5,6)) |
两值比较最大值为 10 |
两值比较最大值为 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 ## |
Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil)。
> s, e = string.find("www.web3.xin", "web3") |
> print(s, e) |
5 10 |
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 |
print(maximum({8,10,23,12,5})) |
23 3 |
Lua函数可以接受可变数目的参数,和C语言类似在函数参数列表中使用三点(...) 表示函数有可变的参数。
Lua将函数的参数放在一个叫arg的表中,#arg
表示传入参数的个数。
例如,我们计算几个数的平均值:
function average(...) |
result = 0 |
local arg={...} |
for i,v in ipairs(arg) do |
result = result + v |
end |
print("总共传入 " .. #arg .. " 个数") |
return result/#arg |
end |
print("平均值为",average(10,5,3,4,5,6)) |
总共传入 6 个数 |
平均值为 5.5 |