将 Observable 写入文件
Writing an Observable to file
我目前有以下代码:
val writer: PrintWriter = ???
val linesObservable: Observable[String] = ???
val future: CancelableFuture[Unit] = linesObservable.foreach(writer.write)
writer.close()
我的目标是消除上述代码段中的所有副作用。
从功能的角度来看,writer
应该充当 future
的资源/支架。
因为我使用的是 Monix 版本 3.0.0-RC2
,所以有新的 bracket
方法可用于 Observable
和 Task
(可能更多 类),这可能是我正在寻找的东西 - 但我还不太清楚。
是的,你是对的。最好获取 PrintWriter
作为资源,以便在完成写入后可以干净地关闭它。
val writer: Resource[Task, PrintWriter] =
Resource.make[Task, PrintWriter](???)(pw => Task.delay(pw.close()))
val linesObservable: Observable[String] = ???
writer.use { pw =>
linesObservable.foreachL(pw.write)
}
我目前有以下代码:
val writer: PrintWriter = ???
val linesObservable: Observable[String] = ???
val future: CancelableFuture[Unit] = linesObservable.foreach(writer.write)
writer.close()
我的目标是消除上述代码段中的所有副作用。
从功能的角度来看,writer
应该充当 future
的资源/支架。
因为我使用的是 Monix 版本 3.0.0-RC2
,所以有新的 bracket
方法可用于 Observable
和 Task
(可能更多 类),这可能是我正在寻找的东西 - 但我还不太清楚。
是的,你是对的。最好获取 PrintWriter
作为资源,以便在完成写入后可以干净地关闭它。
val writer: Resource[Task, PrintWriter] =
Resource.make[Task, PrintWriter](???)(pw => Task.delay(pw.close()))
val linesObservable: Observable[String] = ???
writer.use { pw =>
linesObservable.foreachL(pw.write)
}