获取键对应的表格。

有没有一种方法,可以从键本身中检索出其所属的表格?例如:

tbl { Italy = "Roma" }

我能否从 Italy 回到 tbl 呢?

点赞
用户1442917
用户1442917

不是的,但是你可以在元素中将表格本身的引用保存下来:

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

打印结果为 true

2014-11-22 20:40:56
用户869951
用户869951

你无法在属性(表字段)上实现你所想要的操作,但你可以使用方法实现:

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

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

2014-11-22 21:11:03
用户2226988
用户2226988

一个键是指除了 nil 以外的任何值。在这里,你有一个 string 值: "Italy" 。没有一个值有“父母”或“所有者”的概念。尽管如此,如果有需要,你可以创建结构体,应用这个概念。

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)
2014-11-22 23:08:01