item = {y = 21}
function item:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function item:Run()
print("item running")
end
berry = item:new{x = 52}
function berry:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function berry:Run()
print("berry is running")
self.__index:Run()
end
berry:new{b = 32}:Run()
当应该打印“berry is running”后面跟着“item running”时,输出会无限地打印“berry is running”。即使我将
self.__index
改为 self.__index.__index
或者甚至是 self.__index.__index.__index
,输出仍然会无限地打印“berry is running”。我该如何纠正这个问题呢?非常感谢您的帮助。
self.__index:Run()
و›؟وچ¢ن¸؛getmetatable(self):Run()
- Egor SkriptunoffRun()
方法在层次结构中的每个级别上都会被执行一次。这就是为什么会有三条消息:来自子类、来自berry
类和来自item
类。 - Egor Skriptunoff