【发布时间】:2015-05-27 17:27:02
【问题描述】:
我有一个用于在文件之间共享值的 lua 表。但是在以下情况下我会感到困惑
utility.lua 文件
M = {}
M.host_url = '192.168.0.1'
function M.myFunc()
print(M.host_url )
end
return M
在我的 main.lua 中
utility = require('utility')
utility.myFunc() -- this gives me 'a nil value' error
host_url 出现错误(nil 值)?
【问题讨论】:
-
你是如何使用sn-p的代码的?在什么环境下?因为在下面添加了
M.myFunc()的文字 sn-p 可以正常工作。您能否向我们展示一个更具代表性的代码示例? -
我再次编辑了我的问题。我在另一个lua文件中使用了它
-
@wildcolor:然后将
M设为局部变量(local M = {})。您可能正在另一个模块中覆盖它。 -
任一。如果没有
local,那么M变量是一个全局变量。任何其他模块/等。使用/创建另一个M变量将使用相同的全局M变量,这会导致问题(特别是如果您有另一个完全按照该样式编写的模块,您会遇到问题)。 -
@wildcolor 问题在于
M.myFunc函数中使用的M不是来自该模块的M它是全局M在函数被调用时可用。稍后我将尝试写一个答案来解释这一点。