переходные ленивые vals в конструкторе - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел бы объявить @transient lazy val в качестве параметра конструктора.Пример:

class Foo(@transient lazy val foo: FooFoo).

Scala 2.11 пока не имеет поддержки .Предложенный способ в проблеме, связанной выше, состоит в том, чтобы объявить еще один ленивый val в качестве члена класса и указать ему параметр конструктора call-by-name.

Пример (из вопроса):

def f[a](lazy t: a) = {
 ..
}

должен быть эквивалентен:

def f[a](t': => a) = {
  lazy val t: a = t'
  ..
}

Мой вопрос: будет ли второй метод гарантировать, что ленивое значениеправильно инициализируется при десериализации при первом обращении к ней?

...