类的类型参数。上下文约束是形式上的[T: Bound],它被扩展为普通类型参数。T与类型的隐式参数一起使用。Bound[T].考虑一下方法tabulate它由对从0到给定长度的数字范围内应用给定函数f的结果形成数组。到Scala2.7,表格可以写成如下:def tabulate[T](len: Int, f: Int => T) = {
val xs = new Array[T](len)
for (i <- 0 until len) xs(i) = f(i)
xs}在Scala2.8中,这已经不可能了,因为创建正确的表示形式需要运行时信息。Array[T]..需要通过传递ClassManifest[T]作为隐式参数进入该方法: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}作为速记形式,上下文约束可用于类型参数。T相反,给予: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}