LoginSignup
0
0

initializeメソッドとは?

Posted at

initializeメソッド

initializeと言う名前が付けられたメソッドは特別なメソッドで、オブジェクトが新しく生成されるときに自動的に initialize メソッドが呼び出されます。

initialize1.rb
class Drink
 def initialize   #iniitializeメソッドを定義-----①
  puts "新しいオブジェクト"
 end
end

Drink.new         #initializeメソッドが自動で呼ばれる-----②
#=> 新しいオブジェクト

①でinitializeメソッドを定義します。②でnewメソッドが呼ばれるとオブジェクトが作られますが、その際にinitializeメソッドが自動で呼ばれます。

インスタンス変数の初期値を設定する

initializeメソッドが便利な場面の例として、「インスタンス変数の初期値を設定する」 があります。

initialize2.rb
class Drink
 def initialize()
  @name = "カフェラテ"  # @newにを代入-----①
 end
 def name
  @name 
 end
end

drink = Drink.new    #classをnewメソッドを使ってインスタンス化----②
puts drink.new       #nameメソッドを呼び出す----③
#=> カフェラテ

②でDrink.newしてオブジェクトが作られるときにinitializeメソッドが呼ばれ、①でインスタンス変数@nameに"カフェラテ"が代入されます。③でnameメソッドを呼ぶと、戻り値は①で代入した"カフェラテ"になっています。

initializeメソッドに引数を渡す

先ほどのプログラムで、Drinkクラスのオブジェクトを作ると@nameには初期値として”カフェラテ”が代入されるようになりました。では、この初期値を”カフェラテ”以外にも自由に設定するためにはどうしたらいいでしょうか?これは、initializeメソッドに引数を渡せるようにすることで解決できます。
 
initializeメソッドに引数を受け取るように定義して、newメソッドを呼び出す時にオブジェクトを渡すと、initializeメソッドで引数として受け取ることができます。

initialize3.rb
class Drink
 def initialize(name)     #initializeメソッドに引数を受け取るように定義-----①
  @name = name            #引数で受け取ったオブジェクトを@nameに代入-----②  
 end
 def name
  @name 
 end
end

drink = Drink.new("モカ")  #newメソッドに”モカ”を渡す-----③
puts drink.name            #-----④
#=> モカ

①でinitializeメソッドに引数を受け東洋に定義しています。③でnewメソッドを呼び出し、”モカ”を渡しています。initializeメソッドが呼ばれるときに、引数として変数nameに”モカ”が渡ってきます。②で引数で受け取ったオブジェクトを@nameへ代入します。④で@name変数の中身を表示させると、③で渡した”モカ”になっています。

まとめ

  • initializeメソッドで定義しておくとオブジェクトが作られるときに自動で呼び出されて実行される  
  • initialzieメソッドに引数を受け取るように定義しておくと、newメソッドを呼び出すときに引数を渡すことで、initializeメソッドで引数として受け取ることができる。

    参考

    [ゼロからわかるRuby超入門]
    initializeメソッドの使い方

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0