【发布时间】:2019-06-24 18:38:28
【问题描述】:
我正在查看 Scala 2.12 Collection Library 源代码并注意到以下内容:
trait TraversableOnce[+A] extends Any with GenTraversableOnce[A] {
//methods
implicit class MonadOps[+A](trav: TraversableOnce[A]) {
def map[B](f: A => B): TraversableOnce[B] = trav.toIterator map f
def flatMap[B](f: A => GenTraversableOnce[B]): TraversableOnce[B] = trav.toIterator flatMap f
def withFilter(p: A => Boolean) = trav.toIterator filter p
def filter(p: A => Boolean): TraversableOnce[A] = withFilter(p)
}
}
将 Monad Ops 放入 implicit 类的原因是什么? TraversableOnce 的 Traversable 子特征具有所有未定义为 imlpicit 类的单子方法(尽管通过 TraversableLike)。
【问题讨论】:
标签: scala collections traversable