CayHorstmannの本「せっかちな人のためのスカラ」からの非常に単純な演習は私を困惑させ続けます。それprimary
は、コンストラクターauxiliary
についてです:default primary
例5.10: クラスを検討する
class Employee(val name: String, var salary: Double) {
def this() { this("John Q. Public", 0.0) }
}
明示的なフィールドとデフォルトのプライマリコンストラクターを使用するように書き直します。
やるべきことについてはよくわかりません。あなたの何人かは解決策を提案できますか?
ただし、この演習を解決しようとすると、プライマリコンストラクターとフィールドについてこれまで気づかなかったことがわかった可能性がありval
ます(ご覧のとおり、よくわかりません)。
(上記のクラスのように)val
フィールドはコンストラクターを介してのみ初期化でき、コンストラクターを介して初期化できないと言ったら、私は正しいですか?後者の場合、コンパイラーは、エラーの原因となるフィールドへの再割り当てと見なします。name
Employee
primary
auxiliary
val
val
最初は、コンストラクターで初めてフィールドを割り当てることが合法であると期待して、Javaのfinalフィールドとほぼ同等のフィールドと考えていましたが、間違っていたようです。
私は大げさな推測に過ぎないかもしれないことに完全に満足していないので、誰かが私にその点についてより正確な情報を教えてくれれば幸いです。