2013-05-03 16 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。如果你想打印一個有意義的內容顯示(即如果這個類沒有超載),你應該使用一個漂亮的打印庫。