从密钥中检索表

时间:2014-11-22 19:29:29

标签: lua lua-table

有没有办法从密钥本身检索属于密钥的表?例如

tbl { Italy = "Roma" }

我可以从意大利回到tbl吗?

3 个答案:

答案 0 :(得分:2)

不,但您可以在元素中保存对表本身的引用:

tbl = {}
tbl.Italy = {"Roma", tbl}
print(tbl == tbl.Italy[2])

打印true

答案 1 :(得分:0)

您无法为属性(表字段)执行您想要执行的操作,但您可以使用方法执行此操作:

function tbl.getItaly(self)
     return self.Italy
end

然后tbl:getItaly()返回意大利的tbl;在方法中,self由Lua解释器隐式给出,并表示包含被调用方法的表。请注意,您需要使用冒号而不是点语法。

答案 2 :(得分:0)

键是nil以外的任何值。在这种情况下,您有string值:“意大利”。没有价值具有“父母”或“所有者”的一般概念。尽管如此,如果需要,您可以创建应用该概念的结构。

local capitals = {}
capitals.Italy = { capital = "Roma", collection = capitals }
capitals["Czech Republic"] = { capital = "Prague", collection = capitals }

local playwrights = {}
playwrights["William Shakespeare"] = { born = 1564, died = 1616, collection = playwrights }


local fact = capitals.Italy
print(fact.collection == capitals)