初始化时如何自引用table

How to self-reference table during initialization

有没有更短的方法:

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

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

没有。

如果你能忍受这两个表达式 thisismytable:whatismytable() 而不是 thisismytable.whatismytable 之间的区别,你可以这样做:

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

测试:

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

更多用法:

print(thisismytable:whatismytable().non)

你不能。我使用辅助函数。

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)