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