Недавно я столкнулся с проблемой, в которой я вижу ошибку "слишком много уровней C (ограничение - 200)".
Что именно это означает и как я могу предотвратить это?
Я думал, что это связано с циклическими запросами, но он указывает на строку в моем коде, которая создает новыйЭкземпляр класса, например, так:
Class:new()
Что касается моих модулей, у меня были некоторые циклические требования, но я попытался исправить их, переместив внешний класс в тот же модуль, например так:
Class.SubClass = Class:new()
Есть мысли?
Обновление:
Вот пример того, с чем я сталкиваюсь:
Class.lua
local Class = {}
function Class:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
return Class
classes / Entity.lua
local Class = require('Class')
local Player = require('classes/Player')
local Entity = Class:new()
function Entity:getPlayer()
return Player:new()
end
return Entity
classes / Player.lua
local Class = require('Class')
local Entity = require('classes/Entity')
local Player = Class:new()
function Player:getEntities()
local entities = {}
for i = 1, 100 do
entities[i] = Entity:new()
end
return entities
end
return Player
Я понимаю, что это круговая зависимость, но единственное решение, которое я Lua: Как избежать Циркуляр Требуется , который использует глобалы.Есть ли способ избежать этого с местными жителями?