“:” En el parámetro Tipo
-
05-10-2019 - |
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]?
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.