我在猫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]
写为方法的参数?
由于
答案 0 :(得分:2)
Scala对于类型和值具有单独的命名空间,因此类型和值可以具有相同的名称而没有冲突,并且(如Dima的评论所述),它们之间没有任何关系。 A
中的A: ...
是一个值; A
中的...[A]
是一种类型。
赋予它们相同的名称只是猫使用的惯例,因此像A.empty
"这样的调用看起来像#34;它们是A
类型(或其伴随对象)上的调用,但实际上它们不是。