最接近的事情
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)
}
我找到了列出的问题add lazy parameters,所以我猜它会被添加 有一天。与此同时,有没有人知道比上面更清洁的伎俩?
答案 0 :(得分:7)
也许scalaz.Need
?这是this answer中向我建议的。
scala> case class Foo(next: Name[Foo])
defined class Foo
scala> lazy val x: Foo = Foo(Need(y)); lazy val y: Foo = Foo(Need(x))
x: Foo = <lazy>
y: Foo = <lazy>
scala> x.next.flatMap(_.next).value eq x
res61: Boolean = true