Вы больше не можете назначать переменную require и ссылаться на переменную - PullRequest
1 голос
/ 24 мая 2019

я использую lua5.1, и я немного запутался в том, как требуются работы. Я видел, что код требует присвоения переменной и использует это

config = require("config") --outputs a Boolean value
--what I've seen in code
config = require("config")
local cfg = config.getConfig("some_config.conf")

1 Ответ

2 голосов
/ 24 мая 2019

- выводит логическое значение

Это в значительной степени неверно.require возвращает возвращаемое значение загруженного модуля Lua.Если этот модуль не возвращает значение, он возвращает true.Если модуль не может быть загружен, он возвращает false с последующим сообщением об ошибке.

Модули Lua ожидаются , чтобы вернуть таблицу, содержащую содержимое внутри этого модуля.Именно так должна работать идиома модуля, и большинство модулей так и делают.Таким образом, идиома local varname = require "modulename", как правило, используется для доступа к модулям.

В более старой идиоме Lua для модулей (используемой в основном в Lua 5.0 через функцию module) модули просто сбрасывали все свои функции вглобальная таблица или подтаблица в глобальной таблице.От этого в значительной степени отказались по очевидным причинам.Теперь ожидается, что модули уважают глобальную таблицу и оставляют ее в покое.

И, пожалуйста, обратите внимание на использование local здесь.Вы также не должны загрязнять глобальную таблицу.

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