Bazı scalaz akışlı dokümanlardan bir örnek alalım, ancak teorik bir dönüşle. Scalaz akışlarında Görevden günlüğe kaydetme ve görmezden gelme
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
Bu durumda dosya çok iyi olmayan bazı çift dize içerebilir ve
fahrenheitToCelsius
bazı
NumberFormatException
atar. Bu durumda, belki de bu hatayı günlüğe kaydetmek ve daha fazla akış işlemi için göz ardı etmek istiyoruz. Bunu yapmanın deyimsel yolu nedir? Bazı örnekler gördüm, ancak genellikle
collectFrom
akışı.
değil adımları tekrarlayın. Scalaz ile yapabilirsiniz, ancak, başarısız haritalama ve durumda 'Try' kullanmak hatayı yol giriş yapabilirsiniz (muhtemelen bu şekilde: https://github.com/scalaz/scalaz-stream/blob/master/src/test/scala/scalaz/stream/examples/WritingAndLogging.scala#L63). –