0

ばかげた質問ではないことを願っています.scalaには、私がまだ気づいていない構文上の砂糖がたくさんあります. 私は開発者として改善し、本当に読みやすいコードを書き込もうとしているので、それが私の意図です。

一度だけ宣言されるリストを作成し、明確にするためにメソッド本体内に配置することは可能ですか? 私はこれをやりたいと思っており、scalaにそれをpermgenに入れさせ、決して変わらないのでそのままにしておきます。これを行うことは可能ですか、それともクラス本体で宣言する必要がありますか?

例えば

def method(param: Whatever) {
  val list = List("1", "1")
}

編集:私はそれが「最終」であると激しく突き刺しており、今探しています。

4

1 に答える 1

1

セマンティクスでは、呼び出しに副作用がある場合に備えて、呼び出されるList("1", "1")たびに が評価される必要があります。method

私の知る限り、その動作を変更できる修飾子はありません。list囲んでいるクラスで宣言したくない場合は、次のようにします。

class X {
  object MethodHolder {
    val list = List("1", "1")
    def method(param: ???) = ...
  }
  import MethodHolder.method


  // rest of class
}

final注:関数変数にキーワードを使用することはできません。Scala では、finalオーバーライドを防止するだけです (この投稿への回答を参照してください)。

于 2013-05-30T21:08:16.717 に答える