2

我正在创建一个以类为结构的 Corona 应用程序,当我想传递数组对象以创建对象时遇到问题。我有这个:

主程序.lua

local SurpriseBoxClass = require("SurpriseBox")
local BoxClass = require("Box")

local box1 = BoxClass.new('palo', 'images/chestClose.gif', 'OPEN')
local box2 = BoxClass.new('moneda', 'images/chestClose.gif', 'OPEN')
boxes = { box1, box2 }

local game = SurpriseBoxClass.new(boxes)

惊喜盒.lua

local SurpriseBox = {}
local SurpriseBox_mt = { __index = SurpriseBox }

function SurpriseBox.new(boxesAux)
 local object = {
   boxes = boxesAux
 }
 return setmetatable( object, SurpriseBox_mt )
end

问题是当我想在 SurpriseBox 的方法中打印数组的内容时,程序说我数组为零,例如,如果我这样做:

print(boxes[0])

我能做些什么?

谢谢!

4

2 回答 2

2

Lua 表是从 1 开始的。

试试print(boxes[1], boxes[2])

它将打印表 ID。如果您需要打印表格的内容,您必须遍历其字段,或使用自定义打印机为您执行此操作(请参阅“递归打印表格”)。

于 2013-05-03T09:43:49.293 回答
0

查看功能SupriseBox.new(boxesAux)(我收集您希望进行打印的地方):

object中,您将键"boxes"与表相关联boxesAux。要访问boxesAuxvia的内容,object您必须经过以下过程:

object["boxes"]或者object.boxes会让你boxesAux进入你需要上标的地方,即[1]

print(object["boxes"][1]) --etc..
print(object.boxes[1]) --etc..

请注意,现在这将为您提供box1. 如果你想打印一个有意义的内容显示(也就是说,如果类没有重载)你应该使用一个漂亮的打印库。

于 2013-05-03T09:41:36.807 回答