📅  最后修改于: 2023-12-03 15:32:45.961000             🧑  作者: Mango
Lua 把函数看作“第一类值”,这是指可以将函数存储在变量里面,作为参数传递给其他函数,或者作为其他函数的返回值。 与 JavaScript、Python 和 Ruby 等动态语言一样,Lua 支持匿名函数。
定义一个函数使用 function
关键字:
function function_name(arg1, arg2, ...)
-- 函数体
end
这是一个简单的 Lua 函数。它有一个名称 function_name
、参数列表 (arg1, arg2, ...)
、一条注释以及一个函数体。函数体是包含在 end
中间的语句块。
在 Lua 中调用函数和其他语言中类似,使用函数名和一对圆括号来调用函数。例如:
function_name(arg1, arg2)
与其他动态语言一样,Lua 也支持匿名函数。通过将函数字面量赋值给变量,我们可以创建一个匿名函数。例如:
local function_name = function(arg1, arg2)
-- 函数体
end
Lua 函数可以返回多个值。它们以逗号分隔并用在 return 语句中:
function function_name(arg1, arg2)
-- 函数体
return value1, value2, ...
end
返回的值可以存储在一个变量中:
local value1, value2, ... = function_name(arg1, arg2)
在 Lua 中,函数的参数数量是可以变化的。有时候我们不知道有多少个参数会传递给函数,这时候就需要使用可变参数函数。 在函数的参数列表最后加上三个点(...)就可以了。在函数内部就可以使用 arg
表来访问可变参数。例如:
function function_name(...)
for i, v in ipairs({...}) do
print(i, v)
end
end
Lua 支持“尾调用优化”,这意味着当一个函数调用是另一个函数的最后一个动作时,没有必要在堆栈上保留一个新的堆栈帧。在嵌套的函数调用中,尾调用将释放不必要的内存。所以,用来处理大量递归的算法通常使用尾递归函数。
以上就是 Lua 函数语法的介绍。Lua 的函数是其重要的组成部分,熟练掌握函数语法对于 Lua 程序开发很有用处。