在Java中,我将类字段理解为可以从类中的所有地方访问的变量,并且这种变量描述了实例的状态结构。在Java字段中,在任何方法之外定义(这是唯一可以在方法之外的东西)。
在Scala中,“在任何方法之外”是主要的构造函数 - 换句话说:没有“在任何方法之外”。因此,字段在主构造函数中定义。因此构造函数中的任何变量/值都是一个字段。甚至给构造函数的参数都是自动类字段,而不是Java中的本地构造函数变量。
如果我没那么正确:Scala构造函数中是否存在局部变量/值?
如果没有:为什么决定不需要这样的东西?
Clarficiation:我询问概念,而不是具体案例。此外,我不询问如何解决如何获取局部变量(尽管如果答案是没有,我会很感激。)
答案 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