在Corona中使用类传递一个数组对象。

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

我有这个:

main.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)

SurpriseBox.lua

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

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

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

print(boxes[0])

我该怎么做?

谢谢!

点赞
用户2303714
用户2303714

看一下函数 SupriseBox.new(boxesAux)(如果我没理解错,您需要进行打印):

object 中,您将键 "boxes" 与表格 boxesAux 相关联。这样就可以通过以下过程访问 boxesAux 的内容:

object["boxes"]object.boxes 将带您进入 boxesAux,要进入其中,您需要进行超级脚本即 [1]

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

请注意,现在将会给您提供 box1。如果您想打印它的内容的有意义的显示(如果类没有过载),您应该使用漂亮的打印库。

2013-05-03 09:41:36
用户1850436
用户1850436

Lua 表是基于 1 下标的。

尝试运行 print(boxes[1], boxes[2])

它会输出表的 id。如果你需要打印表的内容,你必须遍历它的字段,或者使用一个自定义的打印机来帮你完成(看 "递归打印一个表")。

2013-05-03 09:43:49