Lua 从键检索表

Lua 从键检索表,lua,lua-table,Lua,Lua Table,有没有办法从键本身检索键所属的表?例如 tbl { Italy = "Roma" } 我可以从意大利返回tbl吗?否,但您可以将对表本身的引用保存在元素中: tbl = {} tbl.Italy = {"Roma", tbl} print(tbl == tbl.Italy[2]) 打印true您不能对属性(表字段)执行您想要执行的操作,但可以使用以下方法执行: function tbl.getItaly(self) return self.Italy end 然后tbl:getI

有没有办法从键本身检索键所属的表?例如

tbl { Italy = "Roma" }

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

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

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

打印
true

您不能对属性(表字段)执行您想要执行的操作,但可以使用以下方法执行:

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

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

键是除
nil
以外的任何值。在本例中,您有一个
字符串
值:“意大利”。没有任何值具有“父对象”或“所有者”的一般概念。尽管如此,如果需要,您可以创建应用该概念的结构

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)