我有以下应用程序,我无法弄清楚,为什么运行它两次它打破RT:
val program = for {
_ <- IO { println("Welcome to Scala! What's your name?") }
_ <- IO { println(s"Well hello, foo") }
} yield ()
program.unsafeRunSync()
program.unsafeRunSync()
我运行两次并得到相同的结果两次,为什么它会破坏RT?
答案 0 :(得分:6)
这是因为val a = program.unsafeRunSync(); val b = program.unsafeRunSync()
与val a = program.unsafeRunSync(); val b = a
不是同一个程序。如果表达式是RT,那么您可以内联它或将其自由计算出来。你不能在这里做到这一点。