PerlerのRuby日記

Rubyとか

クラスインスタンス変数

メタプログラミングRubyに書いてあったことメモ。


class Hoge ~ end の間に地の文で書かれている@の変数は「クラスインスタンス変数」と呼ばれるらしい。

class Hoge
  @p  = 123
  @@p = 234
end

# クラスインスタンス変数
puts Hoge.instance_variable_get(:@p)  #=> 123
puts Hoge.instance_eval { @p }        #=> 123
puts Hoge.class_eval { @p }           #=> 123
# クラス変数
puts Hoge.class_variable_get(:@@p)    #=> 234