ポリモーフィズム
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()と#{}のやっている処理は同じ。
同じメソッドで呼び出したとき、オブジェクトに応じた処理が実行される。これをポリモーフィズムという。