我知道我可以通过使用 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/