0

希望不是一个愚蠢的问题 - scala 有很多我还不知道的语法糖。作为开发人员,我正在努力改进并获得真正可读的代码,所以这是我的预先意图。

是否可以创建一个仅声明一次的 List 并将其放置在方法主体中以便清楚起见?我想这样做并让 scala 把那个东西放在 permgen 中,然后把它留在那里,因为它永远不会改变。是否有可能做到这一点,或者我必须在类主体中声明它。

例如

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

编辑:我正在疯狂地抨击它是“最终的”,我现在正在寻找。

4

1 回答 1

1

语义要求List("1", "1")每次method调用时都会评估一次,以防调用有副作用。

AFAIK 没有任何修饰符可以让你改变这种行为。如果你真的,真的不想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 回答