В текущем Scala есть более чистый способ реализовать «шаблон ленивого конструктора»

Ближайшее к

case class Foo(lazy next: Foo)

, что я смог придумать, это

class Foo(_next: =>Foo) {
    lazy val next = _next
}
object Foo {
    def apply(next: =>Foo) = new Foo(next)
    def unapply(foo: Foo) = Some(foo.next)
}

Я обнаружил перечисленную проблему добавить ленивые параметры так что я думаю он будет добавлен когда-нибудь. А пока знает ли кто-нибудь более чистый трюк, чем приведенный выше?

10
задан Owen 4 February 2012 в 23:37
поделиться