可能重复:
做什么<:<, <%<, and =:= mean in Scala 2.8, and where are they documented?
例如在此示例中,来自 scala-arm 1.0:
def toTraversable[B](implicit ev: R <:< TraversableOnce[B]): Traversable[B] =
new ManagedTraversable[B,R] {
val resource = self
override protected def internalForeach[U](resource: R, g : B => U) : Unit =
ev(resource).foreach(g)
}
<:<
(以及类似的奇怪的构造)在 Predef.scala 中定义(来源位于 scala-lang.org),这可能是了解它们是什么的最佳资源。
一般来说,这样的类可用于在特定方法的范围内提供类型参数的进一步界限。
<:<
特别用于要求R
是TraversableOnce[B]
的子类型。
文档中的描述是:
的一个实例证明A <:< B
是A
的子类型。要求 类型B
的隐式参数编码广义 约束A <:< B
。A <: B
约束方法范围内的任何抽象类型
参数列表(不仅仅是方法自己的类型参数)只需添加 类型为T
的隐式参数,其中T <:< U
是所需的上限 边界;或者对于下限,使用:U
,其中L <:< T
是必需的 下限。L