为什么会导致 C 栈溢出?

我知道可以使用rawset来解决这个问题,但我只是想知道为什么以下代码会导致C堆栈溢出。

local mt = {
    __newindex = function(self, key, value)
        self[key] = value
    end
}

local x = setmetatable({}, mt)

x.y = 5
点赞
用户1009479
用户1009479

深递归.

在元方法__newindex的调用内部,self[key] = value 会递归地再次调用元方法 __newindex,直到堆栈溢出。

2014-10-25 06:59:33