Ruby中的类型转换

时间:2013-03-09 20:39:51

标签: ruby

Ruby是强类型语言。因此,它执行type conversion而不是type casting。现在有两种类型的转化 - implicitexplicit

根据什么规则,ruby决定在哪种上下文中应用哪种转换?

1 个答案:

答案 0 :(得分:2)

Ruby是“duck typed”,既不是强类型也不是弱类型,这意味着变量/对象的行为不一定依赖于它所属的类,而是非常“盲”并且在运行时调用方法而没有类型校验。如果它不能这样做,则会引发错误。

Ruby为Integer,String和其他一些内部类进行隐式转换。是否执行转换取决于左操作数。例如,

1 + "2"

左操作数是一个整数,因此ruby尝试进行数学运算+。但右边的操作数是一个字符串,所以ruby会尝试从字符串到整数进行转换(coersion)。 (虽然它仍然失败。要使其工作,需要重新定义方法+ for Integer或我们调用monkey patch来使用String#to_i进行显式转换)