实例化不可变的配对对象 [英] Instantiating immutable paired objects
本文介绍了实例化不可变的配对对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以创建一个对伙伴对象有不变引用的类,还是必须是我在创建后分配的var
?
Is it possible to create a class with an immutable reference to a partner object, or does it have to be a var
that I assign after creation?
例如
class PairedObject (p: PairedObject, id: String) {
val partner: PairedObject = p // but I need ref to this object to create p!
}
或者类似地,我该如何实例化以下一对?
or similarly how could I instantiate the following pair?
class Chicken (e: Egg) {
val offspring = e
}
class Egg (c: Chicken) {
val mother = c
}
推荐答案
以下是解决Chicken/Egg问题的完整解决方案:
Here is a complete solution to the Chicken/Egg problem:
class Chicken (e: =>Egg) {
lazy val offspring = e
}
class Egg (c: =>Chicken) {
lazy val mother = c
}
lazy val chicken: Chicken = new Chicken(egg)
lazy val egg: Egg = new Egg(chicken)
请注意,您必须为chicken
和egg
变量提供显式类型.
Note that you have to provide explicit types to the chicken
and egg
variables.
对于PairedObject:
And for PairedObject:
class PairedObject (p: => PairedObject, val id: String) {
lazy val partner: PairedObject = p
}
lazy val p1: PairedObject = new PairedObject(p2, "P1")
lazy val p2: PairedObject = new PairedObject(p1, "P2")
这篇关于实例化不可变的配对对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文