函数是一组一起执行任务的语句.您可以将代码划分为单独的函数.你如何在不同的函数之间划分你的代码取决于你,但逻辑上这个部门通常是唯一的,因此每个函数执行一个特定的任务.
Lua语言提供了许多内置方法你的程序可以调用.例如,方法 print()打印在控制台中作为输入传递的参数.
已知具有各种名称的函数,如方法或子例程或者程序等.
定义函数
Lua编程语言中方法定义的一般形式如下 :
optional_function_scope function function_name( argument1, argument2, argument3........, argumentn)function_bodyreturn result_params_comma_separatedend
Lua编程语言中的方法定义由方法头和方法组成体的.以下是方法的所有部分 :
可选功能范围 : 您可以使用关键字 local 来限制函数的范围或忽略范围部分,这将使其成为一个全局函数.
功能名称 : 这是函数的实际名称.函数名称和参数列表一起构成函数签名.
参数 : 参数就像一个占位符.调用函数时,将值传递给参数.该值称为实际参数或参数.参数列表指的是方法的参数的类型,顺序和数量.参数是可选的;也就是说,方法可能不包含参数.
功能体 : 方法体包含一组语句,用于定义方法的作用.
返回 : 在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函数时,您可以定义函数必须执行的操作.要使用方法,必须调用该函数来执行定义的任务.
当程序调用函数时,程序控制将转移到被调用函数.被调用的函数执行定义的任务,当执行其返回语句或达到其函数结束时,它将程序控制返回给主程序.
要调用方法,你只需需要传递所需的参数以及方法名称,如果方法返回值,则可以存储返回的值.例如 :
function max(num1, num2) if (num1 > num2) then result = num1; else result = num2; end return result; end-- calling a functionprint("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 10The maximum of the two numbers is 6
分配和传递函数
在Lua中,我们可以将函数赋值给变量,也可以将它们作为另一个函数的参数传递.这是一个简单的例子,用于在Lua中分配和传递函数作为参数.
myprint = function(param) print("This is my print function - ##",param,"##")endfunction add(num1,num2,functionPrint) result = num1 + num2 functionPrint(result)endmyprint(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/#argendprint("The average is",average(10,5,3,4,5,6))
当我们运行上面的代码时,我们将获得以下输出.
The average is5.5