安井です。

rubyを使うようになってからの素朴な疑問なのですが、ライブラリの中
で to_iやto_s がよく出てきますがこれらのメソッドって必要なので
しょうか?
これらは、単に、StringクラスやNumeric系クラスの中の演算系メソッド
の中に隠蔽化、つまり、引数の型を判断して処理を行えばすむ話ではな
いのでしょうか。

なぜこんなことを言うかというと、Timeクラスを使って年月日を操作する
とき、今、この数値を表すオブジェクトは、StringなのかNumeric系なの
かよく迷ってしまうんです。
面倒だからとプログラムを走らせてエラーがでるかどうかで判断すること
もあります。

話を簡単にするため、eval.rbを走らせて簡単な実験をやってみますね。

ruby> 1+1
2

ruby> 1+'1'
ERR: (eval):0:in `+': String can't be coerced into Fixnum

ruby> '1'+'1'
"11"

ruby> '1'+1
ERR: (eval):0:in `+': failed to convert Fixnum into String

2番目は、1+'1' =>2 に、4番目は、'1'+1 =>"11"になってほしいのです。
どうです? エレガントじゃありませんか?

そうすれば、

ruby> 1+'1'.to_i
2

ruby> '1'+1.to_s
"11"

などとしなくてすむでしょう。

反対意見があるかも知れません。絶対必要だというケースがあるなら
教えて下さい。

# 組み込みクラスってrubyソースじゃあなかったですよね?
# rubyだったら提案できるかも知れない。

- - - - - -
安井@日立造船  e-mail: yasuisu / omssv.hq.hitachizosen.co.jp