3

これは私にとって一般的な迷惑です:

trait Foo {
    val x: Int
}

def foo(x: Int) = new Foo {
    val x = x // <-- Here
}

Scala をコーディングしているときに、おそらく 20 分に 1 回、この問題に遭遇します。

私が認識している解決策とそれぞれの欠点は次のとおりです。

  • 名前を付けることができるオブジェクトでローカル宣言を囲みます -- パラメータには機能しません。
  • エイリアスを作成します -- パスに依存する型を保持する必要がある場合は Verbose 。
  • プロキシ コンストラクターを使用する -- 依存型フィールドが存在する場合は面倒です。

他にもありますか?

4

2 に答える 2

2

私は時々この安っぽいアプローチを使用します:

def foo(x: Int): Foo = {
  val x1 = x
  new Foo {
    val x = x1
  }
}
于 2013-10-21T19:18:56.173 に答える