Skip to main content

function

scope function function_name( argument1, argument3..., argumentn)
function_body
return result_params_comma_separated
end

local myprint = function(param)
print(param)
end
  • scope 全局or局部 local局部 不写默认global
  • function_name: 指定函数名称。
  • argument1, argument2, argument3..., argumentn: 函数参数,多个参数以逗号隔开,函数也可以不带参数。 三个点 ... 表示可变参数
  • function_body: 函数体,函数中需要执行的代码语句块。
  • result_params_comma_separated: 函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开。
  • 函数可以作为参数传递 匿名函数赋值

demo

local function add(num1, num2)
return num1 + num2
end

print(add(1, 2))

-- 函数可以作为参数传递 匿名函数赋值
-- 可变参数
local myprint = function(...)
print(...)
end

local function addAndPrint(func_add, func_print, a, b)
local sum = func_add(a, b)
func_print(sum)
end

addAndPrint(add, myprint, 10, 20)

-- lua func can have multiple return value

local function returnMult()
return 1, 2, 3
end

myprint(returnMult())

-- 可变参数
-- select('#', …) 返回可变参数的长度。
-- select(n, …) 用于返回从起点 n(从1开始没有0) 开始到结束位置的所有参数列表

local function average(...)
local count = select("#", ...)
print(count)
print(select(1, ...))
local arg = { ... } --> arg 为一个表,局部变量
local result = 0
-- _ 表示该变量未使用到
for _, v in ipairs(arg) do
result = result + v
end
print(result / count)
end

average(1, 2, 3, 4, 5)