¿Encontraste este artículo ? Cubre la nueva función vinculada al contexto, dentro del contexto de las mejoras de la matriz.
Generalmente, un parámetro de tipo con un límite de contexto tiene la forma [T: Bound]; se expande a un parámetro de tipo plano Tjunto con un parámetro implícito de tipo Bound[T].
Considere el método tabulateque forma una matriz a partir de los resultados de aplicar una función f dada en un rango de números desde 0 hasta una longitud determinada. Hasta Scala 2.7, el tabulado se podría escribir de la siguiente manera:
def tabulate[T](len: Int, f: Int => T) = {
val xs = new Array[T](len)
for (i <- 0 until len) xs(i) = f(i)
xs
}
En Scala 2.8 esto ya no es posible, porque la información en tiempo de ejecución es necesaria para crear la representación correcta de Array[T]. Es necesario proporcionar esta información pasando un ClassManifest[T]en el método como un parámetro implícito:
def tabulate[T](len: Int, f: Int => T)(implicit m: ClassManifest[T]) = {
val xs = new Array[T](len)
for (i <- 0 until len) xs(i) = f(i)
xs
}
Como forma abreviada, se puede usar un enlace de contexto en el parámetro de tipo T, dando:
def tabulate[T: ClassManifest](len: Int, f: Int => T) = {
val xs = new Array[T](len)
for (i <- 0 until len) xs(i) = f(i)
xs
}