在一个需要的脚本中,代码"local a = (...);"是什么意思?

在一个 Lua 文件中,我遇到了以下代码:

local mod_name = (...);

我尝试了代码 print(mod_name),输出了文件名 "pb"。整个脚本是由另一个脚本调用的 require('pb');

我知道函数中 (...) 代表多个参数,但我对此感到困惑。

点赞
用户1009479
用户1009479

在脚本的主体中,... 表示脚本的参数。其功能与 arg 表相同,请参阅 Lua Standalone 参考手册。

for _, v in ipairs{...} do
    print(v)
end

例如,如果使用 test.lua arg1 arg2 调用它,那么输出如下:

arg1
arg2

请注意,在 local mod_name = (...) 中,只保留了括号中的第一个元素。


在您的示例中,脚本使用 require('pb') 从另一个脚本调用。在这种情况下,它加载了两个参数,第一个是模块名称 'pb',第二个则取决于 require 获取加载器的方式。有关详细信息,请阅读 require 的手册。

2014-11-07 04:35:03
用户2226988
用户2226988

... 代表一个参数列表,可以是应用于块(例如脚本)或在函数声明时使用的 function (named_arg_1, named_arg_2, ...)function (...)

可以将一个列表连接到另一个列表中,例如 {1, 2, ...}print("args:",...)。在这些示例中,它在列表的环境中使用。否则,它仅扩展到第一个值。

local a = (...) 中,上下文不是一个列表,因为括号形成了一个表达式。所以,它将第一个值分配给 a

括号似乎是一种风格,因为尽管 local a = ... 有一个列表上下文,但 a 仍然被分配了第一个值。其他例子:local a, b = ... 将第二个值分配给 b,而 local a, b = (...)nil 分配给 b


由此可见,module(...) 将模块所持有的值作为一个函数调用,并使用从 ... 中扩展的参数列表。

2014-11-07 05:24:40