在“魔兽世界”插件中,表格作为第二个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)
答案 0 :(得分:3)
此外,选择呼叫是不必要的。做就是了:
local AddonName , AddonTable = ...
答案 1 :(得分:1)
重新提出问题:
首先要明白在wow中发生的一切都是你的lua文件是lua_loadfile'd,然后生成的闭包正在堆栈上用2个参数执行。
这类似于从外部角度来看需要做的事情,但是当你认为它是不同的时候。
需要返回模块 - 这相当于作为第二个争论的WoW表。要求的参数(模块的名称)等同于第一个参数。