Есть ли в scala класс для ленивых преобразователей, которые оцениваются один раз или никогда?

Что-то такое же простое

class Thunk[+A](body: => A) {
  lazy val result: A = body;
}

Это где-то определено?

Или, возможно, немного более изощренный

class Thunk[+A](body: => A) {
  private[this] var evaluatedInternal = false;

  lazy val result: A = {
    evaluatedInternal = true;
    body;
  }

  def evaluated: Boolean = evaluatedInternal;
}

person Petr    schedule 11.03.2013    source источник


Ответы (1)


Есть классы Name и Need в Scala, которые обеспечивают именно эту функциональность. См. также ошибку 427 Scalaz.

person Petr    schedule 20.07.2013