这篇文章主要介绍了Lua中的函数相关知识点整理汇总,包括函数的参数传递和定义函数等基本知识,需要的朋友可以参考下nSFHTML5中文学习网 - HTML5先行者学习网
函数是一组一起执行任务的语句。可以把代码放到独立的函数中。怎么划分代码功能之间的不同,但在逻辑上划分通常是让每个函数执行特定的任务。nSFHTML5中文学习网 - HTML5先行者学习网
Lua语言提供了程序可以调用大量的内置方法。例如,方法print()打印作为输入传参数在控制台中。nSFHTML5中文学习网 - HTML5先行者学习网
函数是已知的各种名称,如方法或子程序或程序等。nSFHTML5中文学习网 - HTML5先行者学习网
定义一个函数nSFHTML5中文学习网 - HTML5先行者学习网
在Lua编程语言中的方法的定义一般形式如下:nSFHTML5中文学习网 - HTML5先行者学习网
代码如下:nSFHTML5中文学习网 - HTML5先行者学习网
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)nSFHTML5中文学习网 - HTML5先行者学习网
function_bodynSFHTML5中文学习网 - HTML5先行者学习网
return result_params_comma_separatednSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
在 Lua 编程语言的方法定义包括方法头和方法体。这里是方法的所有部件nSFHTML5中文学习网 - HTML5先行者学习网
可选函数适用范围:可以使用关键字本地范围的限制功能或忽略的范围部分,这将使它成为一个全局函数。nSFHTML5中文学习网 - HTML5先行者学习网
函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。nSFHTML5中文学习网 - HTML5先行者学习网
参数:一个参数是像占位符。当调用一个函数,将值传递给参数。这个值被称为实际参数或参数。参数列表是指类型,顺序和数量的方法的参数。参数是可选的;也就是说,方法可能没有参数。nSFHTML5中文学习网 - HTML5先行者学习网
函数体:方法主体包含了定义方法做什么的语句的集合。nSFHTML5中文学习网 - HTML5先行者学习网
返回:在Lua中可以通过下面的逗号分隔的返回值,return关键字返回多个值。nSFHTML5中文学习网 - HTML5先行者学习网
例子:nSFHTML5中文学习网 - HTML5先行者学习网
下面是一个函数的源代码调用max()。这个函数有两个参数num1与num2并返回两者之间的最大值:nSFHTML5中文学习网 - HTML5先行者学习网
代码如下:nSFHTML5中文学习网 - HTML5先行者学习网
--[[ function returning the max between two numbers --]]nSFHTML5中文学习网 - HTML5先行者学习网
function max(num1, num2)nSFHTML5中文学习网 - HTML5先行者学习网
if (num1 > num2) thennSFHTML5中文学习网 - HTML5先行者学习网
result = num1;nSFHTML5中文学习网 - HTML5先行者学习网
elsenSFHTML5中文学习网 - HTML5先行者学习网
result = num2;nSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
return result;nSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
函数参数:nSFHTML5中文学习网 - HTML5先行者学习网
如果一个函数使用参数,它必须声明接受的参数值变量。这些变量被函数的形式参数调用。nSFHTML5中文学习网 - HTML5先行者学习网
正式的参数表现得就像在函数内部其他本地变量和在进入函数创建并在退出时销毁。nSFHTML5中文学习网 - HTML5先行者学习网
调用函数:nSFHTML5中文学习网 - HTML5先行者学习网
当创建一个Lua函数,给什么样的功能,必须做一个定义。要使用一个方法,将不得不调用该函数来执行定义的任务。nSFHTML5中文学习网 - HTML5先行者学习网
当程序调用一个函数,程序的控制转移到被调用的函数。被调用函数进行定义的任务和在执行它的return语句或当其功能的终端到达时,程序控制返回到主程序。nSFHTML5中文学习网 - HTML5先行者学习网
而调用只是需要传递所需的参数以及方法名的方法,如果方法返回一个值,那么你可以存储返回的值。例如:nSFHTML5中文学习网 - HTML5先行者学习网
代码如下:nSFHTML5中文学习网 - HTML5先行者学习网
function max(num1, num2)nSFHTML5中文学习网 - HTML5先行者学习网
if (num1 > num2) thennSFHTML5中文学习网 - HTML5先行者学习网
result = num1;nSFHTML5中文学习网 - HTML5先行者学习网
elsenSFHTML5中文学习网 - HTML5先行者学习网
result = num2;nSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
return result;nSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
-- calling a functionnSFHTML5中文学习网 - HTML5先行者学习网
print("The maximum of the two numbers is ",max(10,4))nSFHTML5中文学习网 - HTML5先行者学习网
print("The maximum of the two numbers is ",max(5,6))nSFHTML5中文学习网 - HTML5先行者学习网
当我们运行上面的代码中,将得到下面的输出。nSFHTML5中文学习网 - HTML5先行者学习网
代码如下:nSFHTML5中文学习网 - HTML5先行者学习网
The maximum of the two numbers is 10nSFHTML5中文学习网 - HTML5先行者学习网
The maximum of the two numbers is 6nSFHTML5中文学习网 - HTML5先行者学习网
分配和传递函数nSFHTML5中文学习网 - HTML5先行者学习网
在Lua中,我们可以指定函数的变量,也可以将它们作为另一个函数的参数。下面是一个简单的例子,用来分配Lua传递一个函数作为参数。nSFHTML5中文学习网 - HTML5先行者学习网
代码如下:nSFHTML5中文学习网 - HTML5先行者学习网
myprint = function(param)nSFHTML5中文学习网 - HTML5先行者学习网
print("This is my print function - ##",param,"##")nSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
function add(num1,num2,functionPrint)nSFHTML5中文学习网 - HTML5先行者学习网
result = num1 + num2nSFHTML5中文学习网 - HTML5先行者学习网
functionPrint(result)nSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
myprint(10)nSFHTML5中文学习网 - HTML5先行者学习网
add(2,5,myprint)nSFHTML5中文学习网 - HTML5先行者学习网
当我们运行上面的代码中,将得到下面的输出。nSFHTML5中文学习网 - HTML5先行者学习网
代码如下:nSFHTML5中文学习网 - HTML5先行者学习网
This is my print function - ## 10 ##nSFHTML5中文学习网 - HTML5先行者学习网
This is my print function - ## 7 ##nSFHTML5中文学习网 - HTML5先行者学习网
函数与变量参数nSFHTML5中文学习网 - HTML5先行者学习网
可以在Lua中创建一个具有可变参数的函数......作为它的参数。我们可以通过看一个例子,利用可变参数该函数将返回平均值。nSFHTML5中文学习网 - HTML5先行者学习网
代码如下:nSFHTML5中文学习网 - HTML5先行者学习网
function average(...)nSFHTML5中文学习网 - HTML5先行者学习网
result = 0nSFHTML5中文学习网 - HTML5先行者学习网
local arg={...}nSFHTML5中文学习网 - HTML5先行者学习网
for i,v in ipairs(arg) donSFHTML5中文学习网 - HTML5先行者学习网
result = result + vnSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
return result/#argnSFHTML5中文学习网 - HTML5先行者学习网
endnSFHTML5中文学习网 - HTML5先行者学习网
print("The average is",average(10,5,3,4,5,6))nSFHTML5中文学习网 - HTML5先行者学习网
当我们运行上面的代码中,将得到下面的输出。nSFHTML5中文学习网 - HTML5先行者学习网
代码如下:nSFHTML5中文学习网 - HTML5先行者学习网
The average is 5.5nSFHTML5中文学习网 - HTML5先行者学习网