在Java中,我将类字段理解为可以从类中的整个位置访问的变量,并且描述实例的状态结构。在Java中,字段是在任何方法之外定义的(这是唯一可以在方法之外的东西)。
在 Scala 中,“任何方法之外”是主构造函数 - 换句话说:不存在“任何方法之外”。因此字段是在主构造函数中定义的。因此,构造函数中的任何变量/值都是一个字段。甚至给予构造函数的参数也自动成为类字段,而不是像 Java 中的局部构造函数变量。
如果我猜对了:Scala 构造函数中有局部变量/值吗?
如果不是:为什么决定不需要这样的东西?
澄清:我询问的是概念,而不是具体案例。另外,我不询问如何解决获得局部变量之类的问题(尽管如果答案是没有,我将不胜感激)。
最佳答案
整个类主体是“构造函数”。
您始终可以使用一对大括号将任何变量的范围限制为您喜欢的小值,因此没有理由引入额外的“概念”,它没有特定的用途。奥卡姆 Razor 。
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
关于scala - Scala 构造函数中有局部值/变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39855159/