【发布时间】:2020-01-21 04:11:02
【问题描述】:
我最近阅读了有关“魔兽世界”游戏的 lua 和插件。由于插件的界面语言是lua,我想学习一门新语言,我认为这是个好主意。
但有一件事我无法了解。在几乎每个插件中,顶部都有这条线,在我看来,它就像一个构造函数,它创建了一个我可以访问的成员的对象。这一行是这样的:
object = {...}
我知道如果一个函数返回多个值(恕我直言,这是 lua 的一大优势)并且我不想将它们单独存储在多个值中,我可以写
myArray = {SomeFunction()}
其中myArray 现在是一个包含值的表,我可以通过索引它来访问这些值 (myArray[4])。由于元素没有显式类型化,因为只有值本身持有它们的类型,所以这对 lua 来说很好。我也知道“...”可以用于函数中的参数数组,以防函数不知道调用时获得多少参数(如java中的String[] args)。但是,这个“大括号-点,点,点-大括号”到底是用来做什么的???
【问题讨论】:
-
在一个函数中,像这样:
function x(...) object = {...} end,这本质上是myArray = {SomeFunction()}的操作类型,只是它将参数填充到一个表中并将该表存储在object中。跨度> -
我不知道三点语法在函数之外意味着什么。也许插件是作为一种调用加载的,因此具有某种形式的上下文参数?
-
您可以在 github (github.com/AeroScripts/QuestieDev) 上查看“Questie”。在 Questie.lua 和 modules/QuestieAuto.loa 你有 _Questie = {...} 和 QuestieAuto_Questie = {...}
标签: lua