Rubyではオーバーロードができない

随分前にMatz氏がRuby MLで可変長引数やオプショナル引数を使ってメソッドを定義し、
メソッド内部でKernel#type、、defined?、Object#kind_of?を用いて処理を分岐すると、
クラスの外部からはオーバーロードしたかのようにそのメソッドを扱えると書いています
(http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/1401)、
現在もMatz氏のこの記事を参照している方は多いようですが今となってはこの記事には
一つの大きな落とし穴があります。
Ruby1.9.0からはKernel#typeが廃止されているため、上記の記事を鵜呑みにした
プログラムはRuby1.9.0以降では必ずエラーとなります。
(http://mono.kmc.gr.jp/~yhara/d/?date=20071215#p03)
Kernel#typeではなくObject#classを使いましょう。
そうすれば、Ruby1.9.0以降でもそのまま動きます。