我最近遇到一个问题,我看到错误“ 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: How to avoid Circular Requires,它使用全局变量。有办法避免与当地人发生这种情况吗?