Im Projekt scala-arm sehe ich einen Code wie diesen:
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
Kann jemand die Bedeutung von [A : Ressource : Manifest] erklären?
Im Projekt scala-arm sehe ich einen Code wie diesen:
def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)
Kann jemand die Bedeutung von [A : Ressource : Manifest] erklären?
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 können sich Linktext 7.4 Kontextgrenzen und Ansichtsgrenzen für weitere Informationen.
Zur Veranschaulichung ein einfacheres Beispiel:
def method[T : Manifest](param : T) : ResultType[T] = ...
Die Notation T : Manifest
bedeutet, dass es eine kontextgebunden . An anderer Stelle in Ihrem Programm, im Geltungsbereich, muss ein Singleton oder ein Wert des Typs Manifest[T]
die als implizit gekennzeichnet ist.
Dies wird dadurch erreicht, dass der Compiler die Signatur der Methode so umschreibt, dass ein zweiter (impliziter) Parameterblock verwendet wird:
def method[T](param : T)(implicit x$1 : Manifest[T]) : ResultType[T] = ...
Wie Ihr Beispiel zeigt, können mehrere Kontextgrenzen in derselben Methodensignatur verwendet werden. Es ist auch möglich, sie mit View Bounds zu kombinieren.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.