Rubyでクラス変数の定義の仕方
クラスC
でcase 1のような定義をすると特異クラスに
クラスインスタンス変数を定義できますが,
クラスC2
でcase 2のように定義すると特異クラスに
クラス変数を定義できると思いましたが,以下の方法だとクラスC2
に
クラス変数を定義していることが確認できました.
class C # case 1
class << self
@val = 100
end
end
class C2 # case 2
class << self
@@val = 100
end
end
確認したコマンド
2.1.5 :002 > C2.singleton_class.class_variables
=> [] # ここが[:@@val]になると思ったが違う!
2.1.5 :003 > C2.class_variables
=> [:@@val]
特異クラスにクラス変数を定義することは少ないかと思いますが,
なぜこのようになるのでしょうか