私は 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 */
}
??? 初期の定義構文が本当に必要なのはなぜですか?