In scala-Arm Projekt sehe ich Code wie folgt:":" in Typ-Parameter
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
Kann jemand die Bedeutung erklären [A: Ressourcen: Manifest]?
In scala-Arm Projekt sehe ich Code wie folgt:":" in Typ-Parameter
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
Kann jemand die Bedeutung erklären [A: Ressourcen: Manifest]?
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
bedeutet
def managed[A](opener : => A)(implicit r: Resource[A], m: Manifest[A]) : ManagedResource[A] = new DefaultManagedResource(opener)
Sie link text7.4 Context Bounds und Ansicht Bounds für weitere Informationen suchen.
ein einfacheres Beispiel für die Verwendung zu veranschaulichen:
def method[T : Manifest](param : T) : ResultType[T] = ...
Die Notation T : Manifest
bedeutet, dass es ein Kontext gebunden ist. An anderer Stelle in Ihrem Programm muss im Gültigkeitsbereich ein Singleton oder Wert vom Typ Manifest[T]
definiert werden, der als implizit markiert ist.
Dies wird durch die Compiler Umschreiben der Methodensignatur einen zweiten (impliziten) Parameterblock zu verwenden, erreicht:
def method[T](param : T)(implicit x$1 : Manifest[T]) : ResultType[T] = ...
Als Ihr Beispiel veranschaulicht, können mehrere Kontextgrenzen in der gleichen Methodensignatur verwendet werden. Es ist auch möglich, sie mit Blickgrenzen zu kombinieren.
http://stackoverflow.com/questions/2982276/what-is-a-context-bound-in-scala – retronym