我正在尝试学习 Scala,并认为我会从阅读“不耐烦的 Scala”开始。在那里,他通过使用以下类引用了构造顺序问题:
class Animal {
val range: Int = 10
val env: Array[Int] = new Array[Int](range)
}
class Ant extends Animal {
override val range: Int = 2
}
然后他解释了为什么env
最终是一个空的 Array[Int] 并继续解释防止这种情况的方法,包括早期定义语法。
但是......我不能通过这样做来防止这种情况:
class Animal(val range: Int = 10) {
val env: Array[Int] = new Array[Int](range)
/* do animal stuff */
}
class Ant(override val range: Int = 2) extends Animal(range) {
/* do ant stuff */
}
???为什么早期定义语法真的很有必要?