什么是<:< mean in Scala? [duplicate]

问题描述 投票:0回答:1

可能重复:
做什么<:<, <%<, 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) 
  }
scala
1个回答
7
投票

<:<
(以及类似的奇怪的构造)在 Predef.scala 中定义(来源位于 scala-lang.org),这可能是了解它们是什么的最佳资源。

一般来说,这样的类可用于在特定方法的范围内提供类型参数的进一步界限。

<:<
特别用于要求
R
TraversableOnce[B]
子类型

文档中的描述是:

A <:< B
的一个实例证明
A
B
的子类型。要求 类型
A <:< B
的隐式参数编码广义 约束
A <: B

约束方法范围内的任何抽象类型

T
参数列表(不仅仅是方法自己的类型参数)只需添加 类型为
T <:< U
的隐式参数,其中
U
是所需的上限 边界;或者对于下限,使用:
L <:< T
,其中
L
是必需的 下限。

© www.soinside.com 2019 - 2024. All rights reserved.