2013-05-03 3 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]) 

어떻게해야합니까?

감사합니다. (난 당신이 인쇄를하고자 수집) 기능 SupriseBox.new(boxesAux)에서

답변

2

루아 표는 1- 기반입니다.

시도 print(boxes[1], boxes[2])

테이블 ID가 인쇄됩니다. 테이블의 내용을 인쇄해야하는 경우 해당 필드를 반복하거나 use a custom printer that does it for you ("테이블을 재귀 적으로 인쇄"참조)해야합니다.

+0

고맙습니다. 나는이 언어로 시작하고있다. =) – Crisiiii

0

봐 :

object에서, 당신은 테이블 boxesAux와 키 "boxes"를 연결하고 있습니다. ,

object["boxes"] 또는 object.boxes 당신이 [1]

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

하는 것으로 즉, 슈퍼 스크립트를 필요로하는에 가고, boxesAux에 당신을 얻을 것이다 : 이것은 당신이 다음과 같은 과정을 거쳐야한다 object를 통해 boxesAux의 내용을 액세스 할 수 그러면 이제 box1이 생깁니다. 의미있는 내용의 내용을 인쇄하려면 (즉, 클래스가 오버로드되지 않은 경우) 예쁜 인쇄 라이브러리를 사용해야합니다.

관련 문제