Как я могу передать varargs в файлы lua? - PullRequest
2 голосов
/ 25 сентября 2010

В аддонах World of Warcraft таблица передается как вторая переменная:

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

Есть ли способ сделать это с обычным lua? Я пытаюсь написать некоторые модульные тесты с минимальными изменениями в моем текущем коде. Пока, когда я просто использую require, я могу использовать select(1, ...), чтобы получить первый параметр require (модуль), но я не могу понять, как заполнить второй аргумент.

Обновление:

Вместо использования require я могу использовать loadfile, чтобы сделать то, что мне нужно. Когда World Of Warcraft загружает аддон, он передает имя аддона и таблицу, которая может быть заполнена функциями вашего аддона. Я могу воспроизвести эту функциональность с помощью этого кода:

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

Ответы [ 2 ]

3 голосов
/ 27 сентября 2010

также, выбор вызова не требуется.Просто сделайте: local AddonName , AddonTable = ...

1 голос
/ 26 сентября 2010

Чтобы перефразировать ваш вопрос:

Сначала поймите, что все, что происходит в wow - это ваш lua-файл, lua_loadfile'd, затем результирующее закрытие выполняется с 2 параметрами в стеке.

Это похоже на то, что требуется, делает с внешней точки зрения, но когда вы думаете об этом, это другое.

Require возвращает модуль - это эквивалент таблицы WoW, являющейся вторым аргументом. Требуемый параметр (имя модуля) является эквивалентом первого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...