2012-01-11 62 views
0

如果我在Lua中有這樣的代碼,我該如何稱之爲'this'?Lua中的數組中的數組

array = { this = { pic="hi.png", health=4 } , pos=20 } 

編輯:

例如說我有這樣的敵人表:

enemy = {} 
enemy[1] = {pic="Ships/enem-01.png", hp=2} 
enemy[2] = {pic="Ships/enem-02.png", hp=4} 
enemy[3] = {pic="Ships/enem-03.png", hp=3} 
enemy[4] = {pic="Ships/enem-04.png", hp=5} 
enemy[5] = {pic="Ships/enem-05.png", hp=7} 
enemy[6] = {pic="Ships/enem-06.png", hp=9} 
enemy[7] = {pic="Ships/enem-07.png", hp=15} 

話,我希望能夠創造有位置的表。

level1 = {} 
level1[1] = { ent = enemy[2], xpos= 20, ypos=20} 

我怎麼會打電話給PIC,使用level1,或不是我?

我會改變1級能像

level1[1] = {ent = 2, xpos=20, ypos=20} 

然後用

screen:draw(level[1].xpos, level[1].ypos, enemy[level[1].ent].pic) 
+0

我會在表格數組中指出'this'是一個「key」。 – jpjacobs 2012-01-11 14:03:11

回答

2

編輯:

level1[1] = { ent = enemy[2], xpos= 20, ypos=20} 

我怎麼會叫PIC,使用1級,或止跌」我呢?

你只需要做到這一點:

level1[1].ent.pic -- "Ships/enem-02.png" 
+0

非常感謝! – 2012-01-11 16:38:54

2

記住,是在Lua「數組」沒有這樣的事。唯一存在的複雜數據結構是'表',它們使用{ }

表是關聯結構,其中每個存儲的數據可以通過任何類型的鍵索引:數字,字符串或甚至其他表。唯一的限制是nil類型。

讓我們來看一個例子,我們要建立一個表,兩個鍵,一個數字和一個字符串:

example = { [1] = "numberkey", ["key"] = "stringkey" } 

注意,在上面的例子中,表結構是從你的例子不同。 您使用指數[ ],類似於下面的示例表:

但這語法創建和索引字符串鍵相當冗長。因此,爲了使我們的生活更輕鬆,Lua的爲我們提供什麼所謂的「語法糖」:

example2 = { [1] = "numberkey", key = "stringkey" } 

該表的內容是和以前一樣。但關鍵的「關鍵」被宣佈爲不同。我們可以用字符串鍵來完成它們:直接將它們放在表格構造函數中。並對其進行索引,我們可以用另一種「語法糖」:

example2.key 

回到你的榜樣,您可以訪問this,至極是一個字符串鍵,使用:

array.this 

對不起我的英語,這不是我的第一(第二)語言。

+0

除了無,您也不能使用'NaN'作爲表鍵。 – jpjacobs 2012-01-11 14:58:05