以下是方法签名示例:
someMethod [A <: BaseType : SecondType : ClassTag]
trait BaseType {}
trait SecondType[A] {}
ClassTag是scala.reflect.ClassTag
“:”是什么意思?
BaseType是否影响SecondType或/和ClassTag参数化?
对于我,当我看到[A <: BaseType]
时,我理解我应该使用实现/扩展特征someMethod
的类型参数调用BaseType
,但还有其他参数用于什么?
答案 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]。