2012-04-01 9 views
2

Ich sah ein Stück Scala-Code mit Manifest-Syntax wie folgt. Ich weiß nicht, was Wireformat hier bedeutet. Welche Einschränkung fügt es dem Manifest A hinzu? Bedeutet das, dass der Typ A das Merkmal WireFormat erweitern muss?Unklare Scala Manifest Syntax

Ich konnte kein Dokument über solche Syntax finden.

trait WireFormat[A] { 
    def toWire(x: A, out: DataOutput) 
    def fromWire(in: DataInput): A 
} 

class DList[A : Manifest : WireFormat] 
+2

es lesen als _takes ein 'A' so, dass es einen' Manifest' und einen 'WireFormat' Kontext für' A'_. –

Antwort

4

Es ist ein context bound. Bei zwei durch Doppelpunkte getrennten Typen bedeutet dies, dass zwei implizite Parameter vorhanden sind.

Mit anderen Worten ist es das gleiche wie:

class DList[A](implicit x: Manifest[A], y: WireFormat[A]) 
+0

On [Kontext Grenzen und Ansicht Grenzen] (http://StackOverflow.com/Questions/4465948/what-are-Scala-Context-and-View-Bounds) ist auch sehr praktisch. –