是否可以創建一個具有對夥伴對象的不可變引用的類,還是必須是在創建後分配的var
?實例化不可變配對對象
例如
class PairedObject (p: PairedObject, id: String) {
val partner: PairedObject = p // but I need ref to this object to create p!
}
或類似如何實例化下面的對?
class Chicken (e: Egg) {
val offspring = e
}
class Egg (c: Chicken) {
val mother = c
}
巧妙!測試...作品 –
我也爲PairedObject添加了解決方案。另外我發現'雞肉'和'雞蛋'不需要懶惰。嚴格地說,你不需要爲兩者都包括類型,因爲可以推斷出這兩種類型。 –
如果在'class'或'object'定義的頂層輸入此解決方案,但如果'chicken'和'egg'是局部變量(例如,函數內部),則會得到非法的前向引用錯誤。一個適用於任何範圍的解決方案是:'lazy val(egg:egg,chicken:chicken)= ...',它可以是自引用的。 –