【问题标题】:Lua global table different in different filesLua全局表在不同文件中不同
【发布时间】:2015-06-10 19:54:04
【问题描述】:

我在 Android 上使用 LuaJava 的 AndroLua 端口,当我在文件 A 中定义全局表并尝试从文件 B 访问它时,缺少一些条目:

文件 A:

Game = {
  name = "name"
}

function Game:init()
  self.score = 7
  self.player = "othername"
  require('B')
end

Game:init() 方法是从 java 中调用的。

文件 B:

require('A')

print(Game.score) -- nil
print(Game.player) -- 'name'

为什么文件 B 不打印 '7' 和 'othername'?

【问题讨论】:

  • 这不是工作代码。它有语法错误。而且由于循环,您也无法加载更整洁的 A 或 B 文件。
  • 是的,你是对的,我从 java 中调用 Game:init() 方法,所以它没有循环
  • 它应该可以工作 c.lua require "A" Game:init() 打印 7othername
  • 所以问题出在require()函数的AndroLua实现中:(
  • 我刚刚注意到 tostring(Game) 在 A 和 B 中返回不同的表名。这很奇怪...

标签: android lua lua-table luajava


【解决方案1】:

文件 A 中存在语法错误:函数应以 end 结尾,而不是 }

您应该收到如下错误消息:

error loading module 'A' from file './A.lua':
    ./A.lua:9: unexpected symbol near '}'

【讨论】:

    【解决方案2】:

    问题在于文件 B 中的 require('A')

    【讨论】:

      猜你喜欢
      • 2015-02-06
      • 2015-09-27
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 2021-03-05
      • 1970-01-01
      • 2018-12-22
      相关资源
      最近更新 更多