initialezeとnewメソッドについて
initializeとnewメソッドについて理解が不十分だったところがあったので、その内容について記載します。
initiazeメソッドとは?
initializeメソッドとは、インスタンスを生成するときに必ず実行したい処理をメソッドを呼び出すことなく実行することができるメソッドです。→初期化している
文章だけ読んでもよくわかりにくいので、以下に例を挙げて説明します。
この例は、ある本の著者とタイトルを表示させるようにしています。
1.Bookクラスの定義
初めに、Bookクラスで著者(author)とタイトル(title)という二つの属性を持つように定義しています。
→ initialize メソッドで、クラスのインスタンスが生成されるときに(newメソッド)呼び出され、著者とタイトルの情報を受け取り、インスタンス変数に代入しています。
2.インスタンスの生成
book = Book.new("J.K.ローリング", "ハリーポッター ○○") というコードで、Book クラスのインスタンスを生成しています。
このとき、引数として "J.K.ローリング" と "ハリーポッター ○○" を渡しています。
3.インスタンスメソッドの呼び出し
book.display というコードで、Book クラスのインスタンスメソッド display を呼び出しています。
class Book #Bookクラス
#クラスの初期化メソッド
def initialize(author, title)
@author = author
@title = title
end
#クラスのインスタンスメソッド
def display
puts "著者: #{@author}"
puts "タイトル: #{@title}"
end
end
# classのnewメソッドに引数を渡す
book = Book.new("J.K.ローリング", "ハリーポッター ○○")
book.display
なぜinitializeメソッドを使うのか?
では、なんでinitializeメソッドを使用する必要があるのか考えます。
initializeメソッドはインスタンスを生成する(newメソッド)時に初期化するため、内容を初期値に設定したい場合、使用します。
感想
普段Rubyを使用する際に、initializeを使用する機会が少ないので、initialize=初期化とだけでも頭の片隅に入れておければなと思います。