你是否不能再将 require 赋值给一个变量并引用该变量了

我正在使用 Lua 5.1,我有点困惑 require 的工作原理 我看到过代码将 require 赋值给一个变量并使用它

config = require("config") -- 输出一个布尔值
-- 这是我在代码中看到的
config = require("config")
local cfg = config.getConfig("some_config.conf")
点赞
用户734069
用户734069

这在很大程度上是错误的。require 返回加载的 Lua 模块的返回值。如果该模块没有返回值,则返回 true。如果无法加载该模块,则返回 false 和错误消息。

Lua 模块 应该 返回包含该模块内部内容的表。这就是模块惯用法的期望工作方式,大多数模块都是这样的。因此,local varname = require "modulename" 惯用法通常是访问模块的方式。

旧版 Lua 模块的惯用法(主要在 Lua 5.0 中通过 module 函数使用)是将所有函数都倒出到全局表或全局表中的子表中。这个惯用法因为显而易见的原因已经被放弃了。现在期望模块尊重全局表并将其保持不变。

请注意这里的 local 使用。你也不应该弄脏全局表。

2019-05-24 15:08:03