scala - 在同一个实例上多次执行 IO::unsafeRunSync 是否合适?
问题描述
我有一个关于IO
monad 的问题。我打开了一些InputStream
,想用IO
它来阅读。这是示例:
def read(io: IO[Option[Array[Byte]]]): IO[Unit] = IO {
io.unsafeRunSync() match {
case Some(b) =>
//do some with b
read(io)
case None =>
()
}
}
我感到困惑的是,我从同一个IO
实例中读取了多次修改它的状态。它看起来不像引用透明方法。这样做是常见的还是有更多的 FP 风格?
解决方案
推荐阅读
- spring - 如何使用嵌入式 tomcat 运行 Spring MVC 项目?
- linux - linux yocto内核驱动开发简单方法
- xamarin.forms - Xamarin 用两种颜色形成圆圈
- javascript - 如何使用 Angular 从用户那里检索地理位置
- android - 广播接收器未激活
- c# - 问答游戏 - 如何在不重复的情况下提出 6 个随机问题?
- angular - 如何获取每个组件或页面留下的所有未完成订阅的计数?
- .net - 在字符串中查找文本
- python - 使用 Tkinter 时如何并行化方法
- gcc - 手动构建的 GCC 和 Clang;Clang 查看系统 C++ 路径,而不是我的 GCC 的