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

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

local x = setmetatable({}, mt)

x.y = 5

最佳答案

Deep Recursion
在对元方法 __newindex 的调用中, self[key] = value 再次递归地调用元方法 __newindex ,直到堆栈溢出。

关于lua - 为什么这会导致 C 堆栈溢出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26559839/

10-12 23:26