塩焼きブログ

塩焼きに関しての研究内容を公開しています

Rubyでオブジェクトを生成した時に実行されるinitializeについて

他の言語でのコンストラクタに相当するinitializeは、newによってオブジェクトを生成する時に実行される。

class Message

  def initialize
    @name = "Tom"
  end

  def hello
    puts "Hello #{@name}"
  end

end
msg = Message.new
msg.hello
# Hello Tom

initializeで引数を受け取ることもできる

class Message

  def initialize(name)
    @name = name
  end

  def hello
    puts "Hello #{@name}"
  end

end
msg = Message.new("Jane")
msg.hello
# Hello Jane

引数を忘れるとこのようにエラーが発生する

msg = Message.new()
msg.hello
# example.rb:3:in `initialize': wrong number of arguments (0 for 1) (ArgumentError)
#   from example.rb:12:in `new'
#   from example.rb:12:in `<main>'