":"在scala中的方法类型中意味着什么?

Che*_*rry 0 generics scala

这是方法签名示例:

someMethod [A <: BaseType : SecondType : ClassTag]

trait BaseType {}

trait SecondType[A] {}
Run Code Online (Sandbox Code Playgroud)

ClassTag是scala.reflect.ClassTag

":"是什么意思?

BaseType是否会影响SecondType或/和ClassTag参数化?

对我来说,当我看到[A <: BaseType]我理解我应该调用someMethod实现/扩展特征的类型参数BaseType,但是还有其他参数用于什么?

som*_*ytt 8

这对某人来说可能是显而易见的,但是:

scala> trait X[A] ; trait Y[A]

scala> def f[A : X : Y] = 42
Run Code Online (Sandbox Code Playgroud)

产量

    def f[A](implicit evidence$1: X[A], evidence$2: Y[A]) = 42
Run Code Online (Sandbox Code Playgroud)

-Xprint:parser.所以它想要X [A]和Y [A].