为什么我收到以下错误?我以为我在指定一个 作为Int并且还将返回值指定为Int。
scala> def adds[A](x: A,y: A)(implicit a:Int = 0 ):Int = a + x + y
<console>:15: error: overloaded method value + with alternatives:
(x: Double)Double <and>
(x: Float)Float <and>
(x: Long)Long <and>
(x: Int)Int <and>
(x: Char)Int <and>
(x: Short)Int <and>
(x: Byte)Int <and>
(x: String)String
cannot be applied to (A)
def adds[A](x: A,y: A)(implicit a:Int = 0 ):Int = a + x + y
答案 0 :(得分:5)
您有效地将a
指定为Int
,并将返回值指定为Int
。但它没有编译,因为泛型A
可能是一个类型MyClass
,例如,并没有方法+。
例如,如果你这样做,你会发生什么:
case class MyClass(a: String)
adds[MyClass](MyClass("a"), MyClass("b"))