如何将varargs传递给lua文件?

如何将varargs传递给lua文件?,lua,Lua,在魔兽世界插件中,表作为第二个vararg传递: -- This is often at the top of WoW lua files local AddonTable = select(2, ...) 有没有办法用常规的lua做到这一点?我正在尝试编写一些单元测试,对我当前的代码进行最小的更改。到目前为止,当我只使用require时,我可以使用select(1,…)来获取需要的第一个参数(模块),但我似乎不知道如何填充第二个参数 更新: 我可以使用loadfile来做我需要的事情,而不是

在魔兽世界插件中,表作为第二个vararg传递:

-- This is often at the top of WoW lua files
local AddonTable = select(2, ...)
有没有办法用常规的lua做到这一点?我正在尝试编写一些单元测试,对我当前的代码进行最小的更改。到目前为止,当我只使用require时,我可以使用
select(1,…)
来获取需要的第一个参数(模块),但我似乎不知道如何填充第二个参数

更新:

我可以使用
loadfile
来做我需要的事情,而不是使用
require
。当魔兽世界加载一个插件时,它会传递该插件的名称和一个可以填充插件函数的表。我可以用以下代码重现该功能:

local addon = loadfile('MyAddon.lua')
local AddonTable = {}
addon('AddonName', AddonTable)

要重新表述您的问题:

首先要了解,在wow中发生的所有事情都是您的lua文件正在被lua_加载文件,然后在堆栈上使用2个参数执行结果闭包

这类似于require从外部的角度所做的事情,但当您通过它来思考时,情况就不同了


Require返回模块-该模块相当于作为第二个参数的WoW表。所需的参数(模块名称)与第一个参数等效。

此外,select调用是不必要的。只要做:
localaddonname,AddonTable=…

我不需要使用AddonName,我只需要传递它以获得兼容性。分配它(而不使用它)比调用select更便宜;但我想我只是吹毛求疵。。。通常的做法是将一次性值赋给u(例如,当您使用string.find时),但如果您知道它们的含义,您最好给它们一个名称。。。