這裏是我的嘗試:用Scala定義循環列表最簡單的方法是什麼?
case class A(val a: A, val b: Int){
override def toString() = b.toString
}
lazy val x: A = A(y, 0)
lazy val y: A = A(z, 1)
lazy val z: A = A(x, 2)
試圖用X做任何事情時,問題就來了;導致評估x開始通過x,y,z的循環評估並以堆棧溢出結束。有沒有一種方法可以指定val a應該被懶惰地計算出來?
1爲代理示例;這很性感。這種方法的缺點?最重要的是,平等對於A類如何表現? –
可能最突出的一點是它需要一個額外的實例來讓你的領域變得懶惰。 第一個(手動)解決方案使用標準的lazy val,並且這些只需要每個值一位(而不是有用對象)。 –