to_iとInteger

こうすれば、

"foo".to_i2 => [0,false]
"0".to_i2 => [0,true]

となってくれます。

http://d.hatena.ne.jp/ytakenaka/20080802/p1

何か微妙に違和感が。


多値とは関係ない話で恐縮ですが、数値に変換できるかどうかで処理を分けたいならキャストして例外を発生させたほうが扱いやすいと思います。

Integer("foo") #=> `Integer': invalid value for Integer: "foo" (ArgumentError)
Integer("0") #=> 0


また、to_iは数値として読める部分までを数値にしてしまうので、多分期待されている結果とは異なるような気もします。

"1foo".to_i #=> 1
Integer("1foo") #=> `Integer': invalid value for Integer: "1foo" (ArgumentError)