Scala中的数字特征如何工作?

时间:2019-06-29 13:18:14

标签: scala traits numeric

在我的项目中,我需要编写一个容器,该容器的某些方法仅适用于数字类型:int,double,byte等。在这种情况下,方法不应与其他类型一起使用并产生错误。

为此,发现了数字特征,但我不太理解为什么在此示例中它不适用于正确的类型。

class A[T](val a:T){
    def method[U<:T with Numeric[T]](b:U):A[U]=new A[U](b)
}
scala> val a = new A[Int](1)
a: A[Int] = A@46c269e0

scala> val b = a.method(1)
<console>:12: error: inferred type arguments [Int] do not conform 
to method method's type parameter bounds [U <: Int with Numeric[Int]]
       val b = a.method(1)
                 ^
<console>:12: error: type mismatch;
 found   : Int(1)
 required: U
       val b = a.method(1)
                        ^

0 个答案:

没有答案