如何在初始化期间自引用表

时间:2015-09-12 14:00:54

标签: lua lua-table

有更短的方法可以做到这一点:

local thisismytable = {
    non = sequitur
}
thisismytable.whatismytable = thisismytable

任何帮助将不胜感激。 我不想重新创建预先存在的功能。

2 个答案:

答案 0 :(得分:5)

没有。

如果您能够区分这两个表达式thisismytable:whatismytable()而不是thisismytable.whatismytable,您可以这样做:

local thisismytable = {
    non = sequitur,
    whatismytable = function (self) return self end
}

测试:

print(thisismytable)
print(thisismytable:whatismytable())

更多用法:

print(thisismytable:whatismytable().non)

答案 1 :(得分:4)

你做不到。我使用辅助函数。

local function ref(t)
  for k, v in next, t do
    if v == ref then t[k] = t end
  end
  return t
end

local root = ref{left=ref, right=ref}
assert(root.left == root)