在哪里可以找到有关将类型参数用作函数参数的文档?

时间:2017-07-10 09:00:48

标签: scala typeclass

我在猫docs中找到了以下示例:

trait Monoid[A] {
  def empty: A
  def combine(x: A, y: A): A
}
def combineAll[A](list: List[A], A: Monoid[A]): A = list.foldRight(A.empty)(A.combine)

为什么可以将A: Monoid[A]写为方法的参数?

由于

1 个答案:

答案 0 :(得分:2)

Scala对于类型和值具有单独的命名空间,因此类型和值可以具有相同的名称而没有冲突,并且(如Dima的评论所述),它们之间没有任何关系。 A中的A: ...是一个值; A中的...[A]是一种类型。

赋予它们相同的名称只是猫使用的惯例,因此像A.empty"这样的调用看起来像#34;它们是A类型(或其伴随对象)上的调用,但实际上它们不是。