ЯoomeR

プログラミング~実装とエラー解決と、時々、AI~

initializeメソッドとは

インスタンスがわかっていれば超簡単な概念

initializeメソッドが適用されるのは「インスタンスが生成される」タイミングです。

よって、「インスタンスとは?」を理解していれば全く難しくない概念なのです。

初期値を設定するためのメソッド

class Yamada

  def initialize
    @language = "japanese"
  end
  
  def check_language
    p  "使用言語は#{@language}です。"
  end
  
end
  
tarou = Yamada.new
jirou = Yamada.new

tarou.check_language

上記のコードでは、インスタンスが生成されるたびに@languageの値を設定しています。

つまり、Yamada.newが実行されるたびにinitializeメソッドが自動的に動くというわけです。

このコードを実行すると

"使用言語はjapaneseです。"

と表示されることが確認できるはずです。

最後の行にjirou.check_languageと追記して実行してみましょう。

こちらも同じ文章が追加で表示されることが確認できたはずです。

応用的な使い方

インスタンスに共通の初期値を持たせる、という機能を応用してみましょう。

class Yamada
  #最初は子供は0人
  @@children_count = 0

  def self.children_counter
    #これがクラスメソッド
    p "山田家には子供が#{@@children_count}人います"
  end

  def initialize
    #インスタンスが作られる=子供が生まれるたびに1つカウントが増える
    @@children_count += 1
  end

  def fire
    p "手から炎がでます"
  end
  
end
  
tarou = Yamada.new
#tarouというインスタンス(子供)が生まれる
jirou = Yamada.new
#jirouというインスタンス(子供)が生まれる
Yamada.children_counter
#クラスに対してクラスメソッドを実行している

こちらは以下の記事で「クラス変数の使い方」として使用したコードです。

インスタンスが生成されるたびに自動的に実行される、という特性を活かし、

生成されたインスタンスの総数を数えることができるようになりました。

「共通の値を持つ」というのはこのような使い方もできるわけですね。

まとめ

initializeメソッドの特徴

  • def initializeという名前で定義する
  • インスタンスが生成されるたびに自動的に実行される
  • インスタンスに共通の値を持たせることができる