📜  Lua-函数

📅  最后修改于: 2020-10-16 05:13:42             🧑  作者: Mango


函数是一起执行任务的一组语句。您可以将代码分成单独的函数。如何在不同功能之间划分代码取决于您,但是从逻辑上来说,划分通常是唯一的,因此每个函数执行特定的任务。

Lua语言提供了程序可以调用的许多内置方法。例如,方法print()打印在控制台中作为输入传递的参数。

已知具有各种名称的函数,例如方法,子例程或过程等。

定义功能

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

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

Lua编程语言中的方法定义由方法标头方法主体组成。这是方法的所有部分-

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

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

  • 参数-参数就像一个占位符。调用函数,将一个值传递给参数。此值称为实际参数或自变量。参数列表是指方法的参数的类型,顺序和数量。参数是可选的;也就是说,一个方法可以不包含任何参数。

  • 函数主体-方法主体包含用于定义方法功能的语句的集合。

  • Return-在Lua中,可以通过在return关键字后面加上逗号分隔的返回值来返回多个值。

以下是名为max()的函数的源代码。此函数采用两个参数num1和num2,并返回两个参数之间的最大值-

--[[ function returning the max between two numbers --]]
function max(num1, num2)

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

   return result; 
end

功能参数

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

形式参数的行为类似于函数内部的其他局部变量,并在进入函数创建并在退出时销毁。

调用函数

在创建Lua函数,您可以定义函数。要使用方法,您将必须调用该函数来执行定义的任务。

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

要调用方法,您只需要传递所需的参数以及方法名称,并且如果方法返回值,则可以存储返回的值。例如-

function max(num1, num2)

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

   return result; 
end

-- calling a function
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中,我们可以将函数分配给变量,也可以将它们作为另一个函数的参数传递。这是在Lua中分配和传递函数作为参数的简单示例。

myprint = function(param)
   print("This is my print function -   ##",param,"##")
end

function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end

myprint(10)
add(2,5,myprint)

当我们运行上面的代码时,我们将获得以下输出。

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

具有可变参数的函数

可以使用’…’作为参数在Lua中使用可变参数创建函数。我们可以通过看一个示例来了解这一点,在该示例中该函数将返回平均值并且可以接受可变参数。

function average(...)
   result = 0
   local arg = {...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

print("The average is",average(10,5,3,4,5,6))

当我们运行上面的代码时,我们将获得以下输出。

The average is    5.5