Rubyクラスインスタンス変数 - Silver/Gold試験対策
クラスインスタンス変数は、 クラス直下で定義する。クラス内参照・代入はできるが、 サブクラスからは参照できない。
class A @a = 1 def self.hoge p @a end end A.hoge #=> 1。クラスメソッドからは参照できる class B @b = 1 def hoge p @b end end b = B.new b.hoge #=> nil。インスタンスメソッドからは参照できない class C < A end C.hoge #=> nil 継承できない
外部から、クラスインスタンス変数を参照する方法はクラスをレシーバとしてインスタンス変数を取得する
class A @a = 1 def hoge self.class.instance_variable_get(:@a) end end A.instance_variable_get(:@a) #=> 1 A.new.hoge #=> 1