调用to_s、to_i 、to_f这样的方法时,返回的结果是一个新对象,不是将对象作为一个字符串或者整型使用,而是请求一个对象提供符合这些格式中的其中一个可以预期的新对象。
>>"123abc".to_i
=>123
ruby提供了名为Integer和Float 的方法,是的,它们看起来像是常量,但是它们确实是方法,只是名称与它们将要转换为的类一致)。这些方法分别与to_i和to_f很相似,但是相对严格:假如要使用它们转换与目标类型不一致的对象,它们会发生异常。
>>Interger(“123abc”)
=>ArgumentError:invalid value for Interger():“123abc”
转换和转型的区别触及一些ruby核心内容。在某种意义上,所有对象都在不停的转型,每一次在对象上调用方法,都使得请求的对象有了特殊的类型。相应地,一个对象的类型代表了在某个特定的时刻,它所能做的所有事情的集合。