Lua - слишком много уровней C (ограничение 200) - PullRequest
0 голосов
/ 26 февраля 2019

Недавно я столкнулся с проблемой, в которой я вижу ошибку "слишком много уровней 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: Как избежать Циркуляр Требуется , который использует глобалы.Есть ли способ избежать этого с местными жителями?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...