我怎样将可变参数传递给Lua文件?

在 World of Warcraft 插件中,作为第二个参数传递了一个表格:

-- 这通常在 WoW 的 lua 文件的顶部
local AddonTable = select(2, ...)

是否有一种用普通的 lua 实现这个的方法?我尝试编写一些单元测试,尽可能少地更改我的当前代码。迄今为止,当我只使用 require 时,我可以使用 select(1, ...) 来获取 require 的第一个参数(模块),但我似乎无法弄清如何填充第二个参数。

更新:

不使用 require,我可以使用 loadfile 来完成所需的操作。当 World of Warcraft 加载插件时,它会传递插件的名称和一个包含您添加的功能的表格。我可以使用以下代码复制该功能:

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

原文链接 https://stackoverflow.com/questions/3793110

点赞
stackoverflow用户151501
stackoverflow用户151501

重新表述你的问题:

首先了解,在 WoW 中发生的所有事情都是你的 Lua 文件被 lua\_loadfile 加载,然后产生的闭包会在栈上执行2个参数。

从外部来看,这类似于require正在执行的操作,但是当你思考它时是不同的。

Require返回模块 - 这相当于 WoW 表格中的第二个参数。需要的参数(模块的名称)相当于第一个参数。

2010-09-26 03:02:24
stackoverflow用户282536
stackoverflow用户282536

另外,select 调用是不必要的。只需这样做:

local AddonName , AddonTable = ...
2010-09-27 01:29:38