GSmGpE6CwX2y9JjB25B8
我们使用此网站上的 Cookie 增强您的用户体验

10 min

函数是可以在脚本中多次使用的指令集。定义后,可以通过命令执行函数,也可以通过/articles/events|事件触发函数。

定义函数

基本函数声明包括 function 关键字,后跟函数名和一对圆括号 (())。由于函数的主体是一个代码块,因此必须用 end 关键字将其关闭。

()end 之间是命令和其他代码组成函数主体。这些命令将在调用函数时执行:

调用函数

定义函数之后,便可以通过调用来执行(函数不会自己执行)。若要调用函数,只需键入其名称,后跟括号 (()) 即可:

函数参数

函数可以利用参数传递数据。声明函数时,可以在括号中包含一个或多个参数名:

调用带有参数的函数时,请指定应传递给函数的。例如,以下函数接受每次调用期间传入的两个数字,将它们相加,并输出结果:

返回值

除了接受参数外,函数还可以返回(发回)数据给调用命令。这是通过 return 值完成的。根据上面的例子,下面的函数返回总和,而不是输出:

当一个函数返回一个值时,它可以被分配给一个变量,或者在任何可以使用变量的地方使用。以下代码说明了这一概念:

与某些编程语言不同,Lua 甚至允许你从函数返回多个值:

其他函数技巧

事件触发的函数

函数并不总是需要用命令调用,它们也可以通过事件调用。有关详细信息,请参阅/articles/events|处理事件一文。

匿名函数

函数可以匿名创建,也就是说,不需要为它们分配名称。当需要从另一个函数或事件的结果调用函数时,这非常有用,例如 delay() 调用或 /Players/PlayerAdded|PlayerAdded 事件连接:

表中的函数

由于函数是 Lua 数据类型,因此可以将它们存储在表中。 此技巧通常用于 ModuleScript|ModuleScripts,其中模块的表包含各种函数:

一旦包含在模块的表中,这些函数就可以被任何通过 require() 访问 ModuleScript 的脚本调用: