Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Object | initialize

概要

Object#initialize(*args, &block) -> object

詳細

ユーザ定義クラスのオブジェクト初期化メソッド
new から呼び出される処理で、 new に渡された引数をそのまま引き継ぐ。
ユーザーが作成するクラスで再定義されることを期待されている。

サンプルコード
require 'tbpgr_utils'

class Person
  attr_reader :name, :age
  attr_accessor :nationality

  def initialize(name , age, &block)
    @name, @age = name, age
    block[self] if block_given?
  end
end

tanaka = Person.new("tanaka", 24)
tanaka.nationality = "Japanese"
dhh = Person.new("dhh", 35) do |e|
  e.nationality = "Danish"
end

bulk_puts_eval binding, <<-EOS
tanaka
dhh
EOS

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils

出力

tanaka # => #<Person:0x2c3f880 @age=24, @name="tanaka", @nationality="Japanese">
dhh    # => #<Person:0x2c3f838 @age=35, @name="dhh", @nationality="Danish">