2010-12-04 15 views
3
class A 
    X = 9 
    Y = B::X 
end 

class B 
    X = 8 
    Y = A::X 
end 

私は2つのクラスそれぞれいくつかの定数を定義するが、上記のように他の定数 を必要とするが、これは私にエラーを与えます:RUBY:定数定義の循環依存を解決する方法は?

circular.rb:7:<class:A>': uninitialized constant A::B (NameError) from circular.rb:5:inに「

が任意のはありますがエラーを解決する方法は?

ありがとうございました。

答えて

3

それはあなたが二つの部分にの定義を分割した場合に動作します:だけ明確にすること

class A 
    X = 9 
end 

class B 
    X = 8 
    Y = A::X 
end 

class A 
    Y = B::X 
end 
+2

:ここでの問題は、sepp2kて溶液によって示されるように、あなたは、円形の依存関係を持っていることはありませんが、それが定義される前に定数を使用しようとしているということです。循環参照がなくても同じ効果が得られます。クラス定義を分割すると、すべての定数が使用される前に定義されているため、問題は解決されます。 –

関連する問題