ポリモーフィズム

  1 # encoding:cp932$
  2 $
  3 ["文字列", 1234567, Dir.open("."), :symbol, [1, 2, 3, 4, 5], {"1" => 1, "2" => 2}].each() do |e|$
  4   puts("#{e}")$
  5   puts(e.to_s())$
  6 end$

4行目の#{}と5行目のto_s()を比較する。
to_s()はObjectクラスで定義されていて、オブジェクトを文字列にして返す。
#{}は与えられたオブジェクトのto_s()メソッドを呼び出して、戻り値を文字列の中に展開している。
つまり、to_s()と#{}のやっている処理は同じ。


同じメソッドで呼び出したとき、オブジェクトに応じた処理が実行される。これをポリモーフィズムという。