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

时间:2014-09-12 05:19:03

标签: scala generics

以下是方法签名示例:

someMethod [A <: BaseType : SecondType : ClassTag]

trait BaseType {}

trait SecondType[A] {}

ClassTag是scala.reflect.ClassTag

“:”是什么意思?

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

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

1 个答案:

答案 0 :(得分:8)

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

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

scala> def f[A : X : Y] = 42

产量

    def f[A](implicit evidence$1: X[A], evidence$2: Y[A]) = 42
-Xprint:parser下的

。所以它想要X [A]和Y [A]。