编辑:我正在使用 Scala 2.9.2
在 Scala 中,我定义了一个包含 Double 的自定义类:
class DoubleWrap( d : Double ) {
def double( ) = d * 2
}
以及从 Double 到 DoubleWrap 的隐式转换:
implicit def wrapDouble( d : Double ) = new DoubleWrap( d )
这允许我执行以下操作:
scala> 2.5.double
res0: Double = 5.0
但是,由于 Scala 中存在从 Int 到 Double 的隐式转换,我还可以执行以下操作:
scala> 2.double
res1: Double = 4.0
该运算符也可以应用于双类型集合的所有元素,使用map
scala> List( 1.0, 2.0, 3.0 ).map( _.double )
res2: List[Double] = List(2.0, 4.0, 6.0)
但是,如果我尝试将该函数应用于整数集合的所有元素,它将不起作用:
scala> List( 1, 2, 3 ).map( _.double )
<console>:10: error: value double is not a member of Int
List( 1, 2, 3 ).map( _.double )
有谁知道为什么会这样?