TraversableOnce MonadOps в библиотеке коллекции Scala - PullRequest
0 голосов
/ 24 июня 2019

Я смотрю на исходники 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?В вычете Traversable TraversableOnce все монадические методы определены не как imlpicit class (хотя и через TraversableLike).

1 Ответ

1 голос
/ 25 июня 2019

Iterator, как то, что мы ожидаем пройти только один раз, является примером того, что расширяет TraversableOnce без расширения Traversable. Здесь будут использованы методы MonadOps.

Примечание MonadOps находится в объекте-компаньоне, а не в признаке.

Также примечание TraversableOnce устарело в 2.13.0 в пользу IterableOnce.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...