Как работает числовая черта в скале? - PullRequest
0 голосов
/ 29 июня 2019

В моем проекте мне нужно написать контейнер, который в некоторых из его методов работает только с числовыми типами: 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)
                        ^

...