λ
Size: a a a
λ
AC
N
AC
N
AC
M
for yieldN
AC
N
N
s"""Moved ..."""конструирует строку, которую вы не записываете ни в какую переменную и никак не используете. Значит она "проваливается" дальше и становится значением if. Вы можете в этом месте написать
val str = if(...) {...} else {...} и потом использовать этот str в теле цикла (например напечатать) или дать строчке "провалиться" дальше. Однако, когда цикл написан как for (...) {...}, он воспринимает своё тело как не имеющее значения и использующееся только для побочных эффектов (изменение каких-то полей, io и так далее). Вы можете изменить это поведение, поменяв выражение на for (...) yield {...}. Тогда for будет возвращать значение типа ArraySeq[String]N
AC
IF
bind[CacheLayer].to[PlayCacheLayer]
I
ΛВ
S
action.provideLayer(...) - эффект, который сначала создает ресурсы, затем выполняет action, затем освобождает ресурсы.Runtime.unsafeFromLayer(layer) - создает ресурсы и держит их до завершения jvm. Так что ресурсы освобождаются через Platform.addShutdownHook ( https://github.com/zio/zio/blob/a53fb07d9bb78629e9564b8da92a824b9e2f6d09/core/shared/src/main/scala/zio/Runtime.scala#L304 )I
ИШ

could not find implicit value for parameter compiler: fs2.Stream.Compiler[[x]Any,G]
} yield ()).compile.drain