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