Pregunta

En proyecto Scala-brazo, veo código como este:

def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)

Puede alguien explicar el significado de [A: Recurso: Manifiesto]?

¿Fue útil?

Solución

def managed[A : Resource : Manifest](opener : => A) : ManagedResource[A] = new DefaultManagedResource(opener)

medios

def managed[A](opener : => A)(implicit r: Resource[A], m: Manifest[A]) : ManagedResource[A] = new DefaultManagedResource(opener)

Puede buscar texto del enlace 7.4 Contexto límites y límites Ver para más información.

Otros consejos

Uso de un ejemplo más simple para ilustrar:

def method[T : Manifest](param : T) : ResultType[T] = ...

Los medios notación T : Manifest que existe un contexto con destino . En otra parte de su programa, en su alcance, se debe definir un conjunto unitario o valor de tipo Manifest[T] que está marcado como un implícito.

Esto se consigue por el compilador de reescritura de la firma del método para utilizar un segundo (implícita) bloque de parámetros:

def method[T](param : T)(implicit x$1 : Manifest[T]) : ResultType[T] = ...

A medida que su ejemplo ilustra, múltiples límites de contexto se puede utilizar de la misma firma del método. También es posible combinarlos con vistas límites.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top