我有类A
和B
,每个类都需要另一个常量。当我这样做时:
class A
puts B::CONSTANT
CONSTANT = "A constant"
end
class B
puts A::CONSTANT
CONSTANT = "B constant"
end
然后我收到了这个错误:
NameError: uninitialized constant B::CONSTANT
存在循环依赖,因为每个类需要首先加载另一个类。这种情况的解决方案是什么?
修改
在我原来的情况下没有循环依赖,但是我有一个A类使用来自另一个B类的常量,但是A在B之前被加载所以抛出异常,然后我在A之前强制加载B,但后来我想:如果我有循环依赖,我会怎么做?
答案 0 :(得分:2)
我不明白为什么你必须为每个类只有一个类主体,并按顺序包含内容。只需:
class A
CONSTANT = "A constant"
end
class B
CONSTANT = "B constant"
end
class A
puts B::CONSTANT
end
class B
puts A::CONSTANT
end