在Learning Scalaz中,方法总和上有一个类型参数。
这是否意味着A类型是Monoid类型?然而,这似乎是错误的,如果类型A是Monoid,那么它如何也是一个整数,因为它在示例中使用。我必须读错类型参数。
类型参数的含义是什么?我该怎么读?
def sum[A: Monoid](xs: List[A]): A = {
val m = implicitly[Monoid[A]]
xs.foldLeft(m.mzero)(m.mappend)
}
答案 0 :(得分:1)
A: Monoid
是一个Context Bound的类型参数。这是语法糖。
以下内容:
def sum[A: Monoid](xs: List[A]): A
变得卑鄙:
def sum[A](xs: List[A])(implicit val $ev: Monoid[A]): A