如何将varargs传递给lua文件?

时间:2010-09-25 08:50:44

标签: lua

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

-- This is often at the top of WoW lua files
local AddonTable = select(2, ...)

有没有办法用普通的lua做到这一点?我正在尝试编写一些单元测试,对我当前的代码进行最小的更改。到目前为止,当我只使用require时,我可以使用select(1, ...)来获取要求的第一个参数(模块),但我似乎无法弄清楚如何填充第二个参数。

更新

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

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

2 个答案:

答案 0 :(得分:3)

此外,选择呼叫是不必要的。做就是了: local AddonName , AddonTable = ...

答案 1 :(得分:1)

重新提出问题:

首先要明白在wow中发生的一切都是你的lua文件是lua_loadfile'd,然后生成的闭包正在堆栈上用2个参数执行。

这类似于从外部角度来看需要做的事情,但是当你认为它是不同的时候。

需要返回模块 - 这相当于作为第二个争论的WoW表。要求的参数(模块的名称)等同于第一个参数。