將這些類寫入後,是否有任何可能的方法來創建男朋友/女朋友對?也就是說,男朋友和男朋友的男孩也是她的男朋友。互相引用的不可變實例
abstract class Person(val name: String)
case class Girl(name2: String, val boyfriend: Boy) extends Person(name2)
case class Boy(name2: String, val girlfriend: Girl) extends Person(name2)
object Run extends App {
val alice: Girl = Girl("alice", Boy("Bob",alice))
// alice.boyfriend.girlfriend is null, not correct
}
一個不可變對象表示一個實體在某個時間點的狀態。但爲了模擬人與人之間的關係,你必須有一種方法來引用一個人,即使它隨着時間的推移而變化。所以你需要某種手柄或身份證,即使這個人改變,也保持不變。在某個時間點區分實體和實體狀態非常重要。看到這個優秀的演講很好地說明了這一點:http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey –