Apakah Anda menemukan artikel ini ? Ini mencakup fitur terikat konteks baru, dalam konteks peningkatan array.
Umumnya, parameter tipe dengan konteks terikat adalah dalam bentuk [T: Bound]; itu diperluas ke parameter tipe biasa Tbersama dengan parameter tipe implisit Bound[T].
Pertimbangkan metode tabulateyang membentuk larik dari hasil penerapan fungsi tertentu f pada rentang angka dari 0 hingga panjang tertentu. Sampai dengan Scala 2.7, tabulasi dapat ditulis sebagai berikut:
def tabulate[T](len: Int, f: Int => T) = {
val xs = new Array[T](len)
for (i <- 0 until len) xs(i) = f(i)
xs
}
Dalam Scala 2.8 hal ini tidak lagi memungkinkan, karena informasi runtime diperlukan untuk membuat representasi yang tepat Array[T]. Seseorang perlu memberikan informasi ini dengan meneruskan a ClassManifest[T]ke dalam metode sebagai parameter implisit:
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
}
Sebagai bentuk singkatan, konteks terikat dapat digunakan pada parameter tipe Tsebagai gantinya, memberikan:
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
}