2012-01-11 118 views
3

可能重复:
What do <:<, <%<, and =:= mean in Scala 2.8, and where are they documented?<:<斯卡拉中的意思是什么?

例如在这个例子中,从斯卡拉臂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) 
    } 
+2

http://www.scala-lang.org/docu/files/ScalaReference.pdf – Jontatas 2012-01-11 13:09:37

+1

两个千年其他副本,请参阅[这里](http://symbolhound.com/?q=%3C% 3A%3C)。 – 2012-01-11 20:20:10

回答

3

<:<(以及类似的奇形怪状的结构)在Predef.scala(源在scala-lang.org)的定义,这可能是为制定最好的资源是什么,他们是。

一般来说,像这样的类可以用来提供特定方法范围内的类型参数的进一步界限。 <:<特别用于要求RTraversableOnce[B]的子类型。

从PREDEF的描述是:

为了限制任何抽象类型T这是在范围中的方法的 参数列表(而不仅仅是该方法本身的类型参数)简单地 添加T <:< U类型的隐式自变量,其中U是所需的 上限;或下限,请使用:L <:< T,其中L是 所需的下限。