2013-05-03 73 views
2

我创建一个应用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的方法,程序说我阵列是零,如果例如我这样做:

print(boxes[0]) 

我该怎么办?

谢谢!

回答

2

Lua表是基于1的。

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

它将打印表格ID。如果需要打印表格的内容,则必须迭代其字段或use a custom printer that does it for you(请参阅“以递归方式打印表格”)。

+0

非常感谢!我以这种语言开始...... =) – Crisiiii 2013-05-03 10:13:12

0

看功能SupriseBox.new(boxesAux)(其中我猜想你想要做印刷):

object,你是关联的关键"boxes"与表boxesAux。这通过object访问boxesAux的内容必须要经过以下过程:

object["boxes"]object.boxes将让你boxesAux,进入你所需要的superscripting即[1]

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

需要注意的是,这现在会给你box1。如果你想打印一个有意义的内容显示(即如果这个类没有超载),你应该使用一个漂亮的打印库。

相关问题