いくつかの scalaz-stream ドキュメントから例を挙げてみましょう。ただし、理論的なひねりがあります。
import scalaz.stream._
import scalaz.concurrent.Task
val converter: Task[Unit] =
io.linesR("testdata/fahrenheit.txt")
.filter(s => !s.trim.isEmpty && !s.startsWith("//"))
.map(line => fahrenheitToCelsius(line.toDouble).toString)
.intersperse("\n")
.pipe(text.utf8Encode)
.to(io.fileChunkW("testdata/celsius.txt"))
.run
// at the end of the universe...
val u: Unit = converter.run
この場合、ファイルには double 以外の文字列が含まれている可能性が非常に高く、 はfahrenheitToCelsius
いくつかのNumberFormatException
. この場合、このエラーをログに記録し、その後のストリーム処理のために無視したいとしましょう。それを行う慣用的な方法は何ですか?いくつかの例を見てきましたが、通常collectFrom
はストリームです。