У меня есть поток с огромным количеством значений. Я ищу идиоматический способ отфильтровывать либо левые, либо карту на правых сторонах. Я хочу избежать чего-то вроде
final case class Foo(x: Either[String, Int], y:Int)
val foos = functionReturningSeqOfFoo()
Source(foos)
.filter(_.x.isRight)
.map(foo => (foo.x.right.get, foo.y))
.map { case (x, y) =>
doSomethingWith(x, y)
}
.runWith(Sink.seq)
Это минимальный пример. Так как мой поток очень длинный, это становится грязным, и это не похоже на хороший подход.
Кстати, то же самое относится и к варианту [T] в моем случае.