📜  lua 函数语法 (1)

📅  最后修改于: 2023-12-03 15:32:45.961000             🧑  作者: Mango

Lua 函数语法介绍

简介

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 程序开发很有用处。