2

I'm creating an app with Corona structured in Class and I have a problem when I want pass an array objects for create an object. I have this:

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

The problem is when I want to print the content of array in a method of SurpriseBox, and the program said me that the array is nil if for example I do this:

print(boxes[0])

What can I do?

Thanks!

4

2 に答える 2

2

Lua テーブルは 1 ベースです。

試してみてくださいprint(boxes[1], boxes[2])

テーブルIDを出力します。テーブルの内容を印刷する必要がある場合は、そのフィールドを繰り返し処理するか、それを行うカスタム プリンターを使用する必要があります(「テーブルを再帰的に印刷する」を参照してください)。

于 2013-05-03T09:43:49.293 に答える
0

関数を見てくださいSupriseBox.new(boxesAux)(印刷をしたいというあなたの願いを集めた場所):

ではobject、キー"boxes"をテーブルに関連付けていますboxesAuxboxesAuxviaのコンテンツにアクセスするにはobject、次のプロセスを実行する必要があります。

object["boxes"]または、上付き文字が必要なことに入るには、にobject.boxesあなたを連れて行きますboxesAux[1]

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

これで が得られることに注意してくださいbox1。そのコンテンツの意味のある表示を印刷したい場合 (つまり、クラスがオーバーロードされていない場合) は、きれいな印刷ライブラリを使用する必要があります。

于 2013-05-03T09:41:36.807 に答える