2012-01-11 61 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