Почему запуск unsafeRunSync() дважды нарушает RT
У меня есть следующее приложение, которое я не мог понять, почему при его запуске дважды он нарушает 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?
1 ответ
Это потому что val a = program.unsafeRunSync(); val b = program.unsafeRunSync()
это не та же программа, что и val a = program.unsafeRunSync(); val b = a
, Если выражение является RT, то вы можете встроить его или разложить его свободно. Вы не можете сделать это здесь.