オブジェクトをIntegerやFloatに変換する
Rubyでは、オブジェクトを整数に変換するメソッド名にto_i
を使う慣例になっている。様々なRubyのクラスがこの慣例に従っており、例えば文字列や時刻、他にもnil
もto_i
で整数に変換することができる。
p "123".to_i #=> 123 p Time.now.to_i #=> 1395194537 p nil.to_i #=> 0
もし、自分で定義したクラスに、整数に変換するメソッドを定義する場合も、その名前はto_i
にしておくと混乱しない。
オブジェクトを整数に変換する別の方法として、組み込み関数Integer
を使う方法がある。Integer
はto_i
より厳密なチェックを行う点が異なる。例えば、Integer
は、文字列が与えられた場合に、整数に変換できない文字列に対しては例外を発生させる。以下のコードはその例である。
p "10_".to_i #=> 10 p Integer("10_") #=> ArgumentError
同様に、Rubyではオブジェクトを浮動小数点数に変換するメソッド名にto_f
を使う慣例になっている。また組み込み関数Float
は厳密なチェックでオブジェクトを浮動小数点数に変換する。
p "12.3".to_f #=> 12.3 p Float("12.3") #=> 12.3 p "10.0_".to_f #=> 10.0 p Float("10.0_") #=> ArgumentError