これは常に私を悩ませます:
class Test(i: Int) {
val this.i = i;
val this.ii = i; // :(
}
すべての vals/vars を同じ方法で宣言したいのですが、なぜこれが Scala コンパイラーを混乱させるのか本当に理解できません。ここを除いて、他のどこでもこれは期待どおりに機能します。
- これをパンチさせない正当な理由はありますか?
- より良い方法/回避方法/Scalaの方法はありますか?
これは常に私を悩ませます:
class Test(i: Int) {
val this.i = i;
val this.ii = i; // :(
}
すべての vals/vars を同じ方法で宣言したいのですが、なぜこれが Scala コンパイラーを混乱させるのか本当に理解できません。ここを除いて、他のどこでもこれは期待どおりに機能します。
そのスコープで宣言するすべての変数はフィールドになります。したがって、特別な構文は必要ありません。
class Test(_i: Int) {
val i = _i
val ii = i
}
またはさらに良い:
class Test(val i: Int) {
val ii = i
}
より明確で小さいコードまたは「一貫性のある」コードを使用するかどうかに応じて、どちらの方法でも記述できます。
スカラの方法は使用しないことthis
です。なぜこれをJavaで使用するのですか?静的メンバーではなく、インスタンスのメンバーにアクセスしていることを明確にするため。静的メンバーは存在せず、コンパニオンオブジェクトのメンバーにはコンパニオンオブジェクトの名前のプレフィックスを付ける必要があるため、これはScalaでは必要ありません。