Я совершенно не знаком с Scala. Я запутался в поведении lazy val
в REPL.Действительно ли Scala lazy val оценивает выражение для получения окончательного типа во время назначения
scala> lazy val a = {println("Hello, World!!!"); 5}
a: Int = <lazy>
scala> a
Hello, World!!!
res0: Int = 5
Я могу видеть, что в РЕПЛ, тип lazy val
a
был назначен правильно, сразу после объявления.
Теперь, мой вопрос, интерпретатор Scala фактически оценивает выражение lazily или просто оценивает, но не сохраняет оцениваемое результирующее значение для предполагаемой переменной.
Заранее спасибо.