Scala构造函数中是否存在本地值/变量?

时间:2016-10-04 14:39:13

标签: scala constructor

在Java中,我将类字段理解为可以从类中的所有地方访问的变量,并且这种变量描述了实例的状态结构。在Java字段中,在任何方法之外定义(这是唯一可以在方法之外的东西)。

在Scala中,“在任何方法之外”是主要的构造函数 - 换句话说:没有“在任何方法之外”。因此,字段在主构造函数中定义。因此构造函数中的任何变量/值都是一个字段。甚至给构造函数的参数都是自动类字段,而不是Java中的本地构造函数变量。

如果我没那么正确:Scala构造函数中是否存在局部变量/值?

如果没有:为什么决定不需要这样的东西?

Clarficiation:我询问概念,而不是具体案例。此外,我询问如何解决如何获取局部变量(尽管如果答案是没有,我会很感激。)

1 个答案:

答案 0 :(得分:1)

整个班级主体是#34;构造者"。

您可以随时使用一对大括号将任何变量的范围限制为小,因此没有理由引入额外的"概念",它没有特定用途。奥卡姆剃刀。

  class Foo(bar: String) { // constructor parameter
    val baz = "baz";  // class member
    {
      val bat = "bat" // "local" variable
      println(bar + baz + bat) // all three are visible
    }
    println(bar + baz) // only first two are accessble
  }
  println (new Foo("bar").baz) // only class member can be accessed here