函数
2021-01-05 本文已影响0人
爱折腾的傻小子
Lua 函数
- 在Lua中,函数是对语句和表达式进行抽象的主要方法
- Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上
- 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
- 函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开
-- 定义max函数 返回最大值
function max(max1, max2)
if max1 > max2 then
return max1
else
return max2
end
end
print(max(8,9)) -- 9
print(max(8,8)) -- 8
print(max(8,7)) -- 8
-- 将函数作为参数传递给函数
myFunc = function(param)
print("打印param:", param)
end
function add(num1, num2, func)
func(num1 + num2)
end
myFunc(100)
add(4, 6, myFunc)
--[[
打印param: 100
打印param: 10
]]
- 多返回值
-- string.find 其返回匹配串"开始和结束的下标"(如果不存在返回nil)
s, e = string.find("~~~ hello Lua!", "hello")
print(s, e) -- 5 9 5 开始位置 9 结束位置
ss, ee = string.find("~~~ hello Lua!", "hello1")
print(ss, ee) -- nil nil
-- 获取table中的最大值即索引值
function maximum(a)
local mi = 1 -- 最大索引
local m = a[mi] -- 最大值
for i, v in ipairs(a) do
if v > m then
mi = i
m = v
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
]]