個人的メモ
クラス変数を取り扱うに当たっていろんなバリエーションがあります。
基本的にはセルフを使うことが多いと思うけど、クラス変数取り扱いメソッドが増える場合はHogeがおすすめ。
class << self
内に書かれているものはself内を見てくれる。
class Hoge
@@count = 1
class << self
def count
puts @@count
end
end
end
class Fuga
@@count = 1
def Fuga.count
puts @@count
end
end
class Haga
@@count = 1
def self.count
puts @@count
end
end
Hoge.count
Fuga.count
Haga::count
結果
1
1
1
class Moga
@@count = 0
def self.count
puts @@count
end
def initialize
@@count += 1
end
end
Moga.new
Moga.count
結果
1
クラス変数は何度でも書き換え可能である。
ちなみに、attr_
シリーズは使えないので注意。
書き換えようのメソッドを作って値を変更するしかない。