将这些类写入后,是否有任何可能的方法来创建男朋友/女朋友对?也就是说,男朋友和男朋友的男孩也是她的男朋友。互相引用的不可变实例
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 –