perlからrubyへ
ずっとperlやっていて、ちょっとrubyを書いたときには、
- 行末にセミコロン(;)をつけてしまう(個人的にはセミコロン症候群と言っています)
- 変数を$からはじめてしまう。
- String#to_i,Integer#to_sを忘れてしまう。
ことがある。
とくにString#to_iは、perlでは変数を数値または文字列として、各評価式でそのうちのどちらかで判断してくれるわけで、これに慣れきっているとこうなるわけだ。
$ irb irb(main):001:0> a = '000000' => "000000" irb(main):002:0> print a.to_i 0=> nil irb(main):003:0> print "yes\n" if a < 200000 ArgumentError: comparison of String with 200000 failed from (irb):3:in `<' from (irb):3 from :0 irb(main):004:0>
まあ、rubyでは、該当するオブジェクトがStringクラスなのか、Integer,Floatクラスかを認識しているのだろうから仕方がないのだけれど。
自動で判断する、ちゃんとクラスを認識しているのはどちらも一長一短があるのでどちらがいいとはいえないですね。