两个使用彼此常量的类

时间:2016-02-29 12:35:01

标签: ruby

我有类AB,每个类都需要另一个常量。当我这样做时:

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,但后来我想:如果我有循环依赖,我会怎么做?

1 个答案:

答案 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