scala参数化类型,其约束显示在冒号之后?

scala参数化类型,其约束显示在冒号之后?,scala,type-parameter,parameterized-types,Scala,Type Parameter,Parameterized Types,我正在查看Sorting.scala的源代码,对它很好奇 下面的源代码段中最后一个方法的定义 object Sorting { /** Quickly sort an array of Doubles. */ def quickSort(a: Array[Double]) { sort1(a, 0, a.length) } /** Quickly sort an array of items with an implicit Ordering. */ def quickSort

我正在查看Sorting.scala的源代码,对它很好奇 下面的源代码段中最后一个方法的定义

object Sorting {
  /** Quickly sort an array of Doubles. */
  def quickSort(a: Array[Double]) { sort1(a, 0, a.length) }

  /** Quickly sort an array of items with an implicit Ordering. */
  def quickSort[K: Ordering](a: Array[K]) { sort1(a, 0, a.length) } //<<??
对象排序{
/**快速排序一组双精度数组*/
def快速排序(a:Array[Double]){sort1(a,0,a.length)}
/**使用隐式排序对项目数组进行快速排序*/

def快速排序[K:Ordering](a:Array[K]){sort1(a,0,a.length)}/证明这是一个“上下文绑定”。 在我正在阅读的一本非常好的书《Scala编程》中找到了答案。来自第5章。关于隐式参数……下面是一个例子 解释发生了什么:

case class MyList[A](list: List[A]) {
  def sortBy1[B](f: A => B)(implicit ord: Ordering[B]): List[A] =
    list.sortBy(f)(ord)

  def sortBy2[B : Ordering](f: A => B): List[A] =
    list.sortBy(f)(implicitly[Ordering[B]])
}

val list = MyList(List(1,3,5,2,4))
list sortBy1 (i => -i)
list sortBy2 (i => -i)
类型参数B:Ordering称为上下文绑定。它表示第二个隐式参数列表,它接受Ordering[B]实例


更多

请检查。视图边界已被弃用。上下文边界经常与一起使用(如本例所示)——事实上,我认为,类型类是引入它们的原因。
case class MyList[A](list: List[A]) {
  def sortBy1[B](f: A => B)(implicit ord: Ordering[B]): List[A] =
    list.sortBy(f)(ord)

  def sortBy2[B : Ordering](f: A => B): List[A] =
    list.sortBy(f)(implicitly[Ordering[B]])
}

val list = MyList(List(1,3,5,2,4))
list sortBy1 (i => -i)
list sortBy2 (i => -i)