【Rails】クラス変数とインスタンス変数とクラスメソッドの違い

2018年2月27日

クラス変数というのはそのクラスが共通で使う事ができる変数。
次の子供クラス(Kodomo)の最初で宣言しているように@を2個重ねて宣言をする。

クラスメソッドというのはメソッド宣言のときにself.を付けてあげる。

class Kodomo

  @@nanninme = 0
  
  def initialize
    @@nanninme += 1
  end
  
  def self.ima
    puts "いま#{@@nanninme}人目"
  end

end


ichioro = Kodomo.new
jiro = Kodomo.new

Kodomo.ima

とやると、子供クラス(Kodomo)を生成するたびに、@@nannninmeがプラス1されていく。

クラスメソッドは、クラス名.ima とやってメソッドを呼ぶと、@@nanninmeを表示する。

@@nannninmeは、クラス変数なので共通の変数として扱われていることがわかる。