【问题标题】:lua table global/local var getting confusedlua 表全局/本地变量变得困惑
【发布时间】: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 在函数被调用时可用。稍后我将尝试写一个答案来解释这一点。

标签: lua coronasdk


【解决方案1】:

在 M.myFunc 中仅执行打印操作,该函数不会返回任何内容。在返回整个数组的实用程序文件中,请参阅下面的代码,它将清除您的疑虑。

在 main.lua 中

utility = require('util')
value = utility.host_url
print(value)

【讨论】:

  • 这可以获取价值,但不能解释或解决根本问题。
  • 你能解释清楚吗?你有什么困惑?我没有得到你的要求?
  • @AndroidUser 谢谢。 siffiejoe 的回答已经解决了我的问题。
猜你喜欢
  • 2017-03-13
  • 1970-01-01
  • 2021-12-11
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多