android - 从 Lua 的构造函数访问函数

标签 android class lua coronasdk

我有一个 Lua 类(class)。在此构造函数中,我声明变量(在空表中),然后我想访问对象的函数以在此表中插入对象。我的代码是这样的:

local BoxClass = require("Box")
local SurpriseBox = {}
local SurpriseBox_mt = { __index = SurpriseBox }    -- metatable

function SurpriseBox.new()  -- constructor
  local object = {
    boxes = {}
  }
  SurpriseBox:CreateBoxes()
  print('constructor -> ' .. #object.boxes)  --> 0
  return setmetatable( object, SurpriseBox_mt )
end

-------------------------------------------------

function SurpriseBox:CreateBoxes()
  local box1 = BoxClass.new('palo', 'images/chestClose.gif', 'OPEN')
  local box2 = BoxClass.new('moneda', 'images/chestClose.gif', 'OPEN')

  self.boxes = { box1, box2}
end

访问函数 CreateBoxes() 后,表中没有任何内容。

感谢您的帮助!

最佳答案

当您调用SurpriseBox:CreateBoxes()时,self参数仍然指向SurpriseBox表,而不是对象 您创建的表。你可能应该这样做:

function SurpriseBox.new()  -- constructor
  local object = setmetatable( {boxes = {}}, SurpriseBox_mt )
  object:CreateBoxes()
  print('constructor -> ' .. #object.boxes)
end

关键是在调用CreateBoxes()之前分配元表,并在对象上调用它,而不是SurpriseBox

关于android - 从 Lua 的构造函数访问函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16518206/

相关文章:

c++ - 消息格式错误

Android CollapsingToolbarLayout 不应显示固定在顶部的工具栏

android - fragment 回栈和 isRemoving()

android - 如何禁用 ViewPager2 中的滑动?

c++ - 如何在另一个类中访问一个类的成员函数?

php - 混合 Lua 和 PHP?

c++ - 如何在 LuaJIT FFI/C++ 绑定(bind)中使用 shared_ptr?

Android:缩放时确定可视区域的坐标

javascript - JS 无法更改 className

c# - 如何在 C# 中查找类的大小