Scala错误:重载方法值+替代方案:

时间:2016-06-30 06:41:55

标签: scala

为什么我收到以下错误?我以为我在指定一个 作为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

1 个答案:

答案 0 :(得分:5)

您有效地将a指定为Int,并将返回值指定为Int。但它没有编译,因为泛型A可能是一个类型MyClass,例如,并没有方法+。

例如,如果你这样做,你会发生什么:

case class MyClass(a: String)

adds[MyClass](MyClass("a"), MyClass("b"))