Lua 函数怎么定义和使用?

文章导读
Previous Quiz Next 函数是一组语句,它们一起执行一项任务。您可以将代码分成单独的函数。如何在不同函数之间划分代码由您决定,但逻辑上划分通常是唯一的,这样每个函数执行特定的任务。
📋 目录
  1. 定义函数
  2. 示例 - 获取两个数的最大值
  3. 函数参数
  4. 调用函数
  5. 示例 - 赋值和传递函数
  6. 示例 - 具有可变参数的 Function
A A

Lua - 函数



Previous
Quiz
Next

函数是一组语句,它们一起执行一项任务。您可以将代码分成单独的函数。如何在不同函数之间划分代码由您决定,但逻辑上划分通常是唯一的,这样每个函数执行特定的任务。

Lua 语言提供了众多内置方法,您的程序可以调用它们。例如,print() 方法用于在控制台打印传入的参数。

函数有各种名称,如 method、sub-routine 或 procedure 等。

定义函数

Lua 编程语言中方法定义的一般形式如下 −

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

Lua 编程语言中的方法定义由方法头方法体组成。以下是方法的所有部分 −

  • 可选函数作用域 − 您可以使用关键字 local 来限制函数的作用域,或者忽略作用域部分,使其成为全局函数。

  • 函数名 − 这是函数的实际名称。函数名和参数列表共同构成函数签名。

  • 参数 − 参数就像一个占位符。当函数被调用时,您将值传递给参数。这个值被称为实际参数或实参。参数列表指的是方法的参数类型、顺序和数量。参数是可选的;也就是说,方法可以不包含参数。

  • 函数体 − 方法体包含定义方法行为的语句集合。

  • 返回 − 在 Lua 中,可以通过在 return 关键字后跟随逗号分隔的返回值来返回多个值。

示例 - 获取两个数的最大值

以下是名为 max() 的函数的源代码。该函数接受两个参数 num1 和 num2,并返回两者中的最大值 −

--[[ 返回两个数之间的最大值 --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

函数参数

如果函数要使用参数,它必须声明接受参数值的变量。这些变量被称为函数的形式参数

形式参数在函数内部表现得像其他局部变量一样,在进入函数时创建,在退出时销毁。

调用函数

在创建 Lua 函数时,您定义了函数要执行的操作。要使用方法,您必须调用该函数来执行定义的任务。

当程序调用函数时,程序控制权转移到被调用的函数。被调用的函数执行定义的任务,当其 return 语句执行或函数的 end 被达到时,将程序控制权返回给主程序。

要调用方法,只需将必需的参数与方法名一起传递,如果方法返回一个值,则可以存储返回值。例如 −

main.lua

-- 定义一个计算两个数的最大值的函数
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

-- 调用函数
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

输出

运行上述代码时,将得到以下输出 −

The maximum of the two numbers is 	10
The maximum of the two numbers is 	6

示例 - 赋值和传递函数

在 Lua 中,我们可以将 function 赋值给变量,并且可以将它们作为另一个 function 的参数传递。这里是一个简单的示例,演示了在 Lua 中赋值和传递 function 作为参数。

main.lua

-- 定义一个匿名 function 并赋值给 myprint 方法
myprint = function(param)
   print("This is my print function -   ##",param,"##")
end

-- 定义一个 add function,它可以接受另一个 function
function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end

-- 使用变量调用 function 
myprint(10)

-- 传递 function 
add(2,5,myprint)

输出

运行上述代码时,我们将得到以下输出−

This is my print function -   ##	10	##
This is my print function -   ##	7	##

示例 - 具有可变参数的 Function

在 Lua 中,可以使用 '...' 作为参数来创建具有可变参数的 function。我们可以通过一个示例来理解这一点,该示例中的 function 将返回平均值,并且可以接受可变参数。

main.lua

-- 定义一个具有可变参数的 function
function average(...)
   result = 0
   local arg = {...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

-- 使用参数调用 function
print("The average is",average(10,5,3,4,5,6))

输出

运行上述代码时,我们将得到以下输出−

The average is	5.5