有没有办法从密钥本身检索属于密钥的表?例如
tbl { Italy = "Roma" }
我可以从意大利回到tbl吗?
答案 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)