如果我在Lua中有这样的代码,我怎么称呼'this'?
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}
如何使用level1调用pic,或者不是我?
我会将level1更改为
level1[1] = {ent = 2, xpos=20, ypos=20}
然后使用
screen:draw(level[1].xpos, level[1].ypos, enemy[level[1].ent].pic)
答案 0 :(得分:2)
编辑:
level1[1] = { ent = enemy[2], xpos= 20, ypos=20}
我如何使用level1调用pic,或者不是我?
你只需要这样做:
level1[1].ent.pic -- "Ships/enem-02.png"
答案 1 :(得分:2)
请记住,Lua中没有'array'这样的东西。唯一存在的复杂数据结构是“表格”,使用{ }
表是关联结构,其中存储的每个数据都可以通过任何类型的键索引:数字,字符串甚至其他表。唯一的限制是nil
类型。
让我们看一个例子,我们想要构建一个包含两个键,一个数字和一个字符串的表:
example = { [1] = "numberkey", ["key"] = "stringkey" }
请注意,在上面的示例中,表结构与您的示例不同。
您使用[ ]
索引表,如下例所示:
example[1]
example["key"]
但是这种创建和索引字符串键的语法非常冗长。因此,为了让我们的生活更轻松,Lua为我们提供了所谓的“语法糖”:
example2 = { [1] = "numberkey", key = "stringkey" }
此表的内容与之前相同。但关键的“关键”被宣布不同。我们可以使用字符串键来完成:将它们直接放在表构造函数中。为了索引它们,我们可以使用另一种“语法糖”:
example2.key
回到您的示例,您可以访问this
,这是一个字符串键,使用:
array.this
对我的英语很抱歉,这不是我的第一语言(和第二语言)。