type parameter classes scala generics types

parameter - scala type



Significado de dos puntos adicionales en la parametrización de la clase Scala (1)

¿Qué significa [A : Manifest : WireFormat] en el siguiente código? Es de com.nicta.scoobi.TextInput (disponible en github). No parece ser ninguno de los límites de tipo habituales.

def fromDelimitedTextFile[A : Manifest : WireFormat] (path: String, sep: String = "/t") (extractFn: PartialFunction[List[String], A]) : DList[A] = { val lines = fromTextFile(path) lines.flatMap { line => val fields = line.split(sep).toList if (extractFn.isDefinedAt(fields)) List(extractFn(fields)) else Nil } }

¿Dónde puedo encontrar más información sobre este tema?


Esto se denomina un límite de contexto. Son azúcar sintáctica para una lista de parámetros implícita:

def meth[A : ContextBound1 : ContextBoundN](a: A) // ==> def meth[A](a: A)(implicit evidence: ContextBound1[A], ContextBoundN[A])

Si hay varios límites de contexto de 1 a N, todos se traducen a la misma lista de parámetros. Consulte esta pregunta para obtener una explicación más detallada sobre cómo funcionan y para qué sirven.

Para encontrar tales símbolos, es útil leer el Tutorial de Scala .