クラス変数を使用したモジュールのインクルージョンを理解しようとしています。クラス変数を含むモジュールを含めると、クラス変数もクラス定義に含まれると思いました。
これは意図したとおりに機能します。
module A
@@my_name = "rick"
def print_name
puts @@my_name
end
end
class Y
include A
extend A
end
Y.print_name
しかし、これはしません:
module A
def self.included(klass)
klass.include B
klass.extend C
end
module B
@@my_name = "bob"
end
module C
def print_name
puts @@my_name
end
end
end
class Y
include A
end
Y.print_name
「ボブ」を期待していましたが、代わりに次のようになりました:
A::C の初期化されていないクラス変数 @@my_name