これは私にとって一般的な迷惑です:
trait Foo {
val x: Int
}
def foo(x: Int) = new Foo {
val x = x // <-- Here
}
Scala をコーディングしているときに、おそらく 20 分に 1 回、この問題に遭遇します。
私が認識している解決策とそれぞれの欠点は次のとおりです。
- 名前を付けることができるオブジェクトでローカル宣言を囲みます -- パラメータには機能しません。
- エイリアスを作成します -- パスに依存する型を保持する必要がある場合は Verbose 。
- プロキシ コンストラクターを使用する -- 依存型フィールドが存在する場合は面倒です。
他にもありますか?