Почему запуск 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, то вы можете встроить его или разложить его свободно. Вы не можете сделать это здесь.

Другие вопросы по тегам