【发布时间】:2026-01-23 08:40:01
【问题描述】:
我正在阅读 Chiusano 和 Bjarnason 的 Scala 中的函数式编程。
在第 10 章中,他们定义了 Monoid 特征:
trait Monoid[A] {
def op(a1: A, a2: A): A
def zero: A
}
该特征的两个示例实例如下:
1) String Monoid:
val stringMonoid = new Monoid[String] {
def op(a1: String, a2: String) = a1 + a2
val zero = ""
}
2) List Monoid:
def listMonoid[A] = new Monoid[List[A]] {
def op(a1: List[A], a2: List[A]) = a1 ++ a2
val zero = Nil
}
我的问题是,为什么我们在stringMonoid 的情况下使用val,而在listMonoid 的情况下使用def?
【问题讨论】:
-
listMonoid采用类型参数[A],而val不允许使用该类型参数(语法错误)。
标签: scala