如何将scalaz-stream进程[F,Option [T]]转换为进程[F,T]?

时间:2016-03-06 00:07:38

标签: scalaz-stream

我有一个scalaz-stream进程:

val src = Process.repeatEval(Task(in.take())) : Process[Task, Option[T]]

如何摆脱选项?

到目前为止,我已经使用了收藏,但它并不优雅:

src.collect { case Some(x) => x } : Process[Task, T]

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您的解决方案是正确的,但实现已存在于scalaz-stream(< = 0.8),process1.stripNone中:

src.pipe(process1.stripNone)

src |> process1.stripNone

许多其他转换(可能是有状态的)在process1中定义,因此值得查看文件以寻找可能有用的转换。