在Scala中默认公开实例变量背后的原理是什么?
在Scala中默认公开实例变量背后的原理是什么。默认情况下,将它们私有化不应该让开发人员减少错误并鼓励合成吗?首先,您应该知道,在编写时:在Scala中默认公开实例变量背后的原理是什么?,scala,Scala,在Scala中默认公开实例变量背后的原理是什么。默认情况下,将它们私有化不应该让开发人员减少错误并鼓励合成吗?首先,您应该知道,在编写时: class Person( val name: String, val age: Int ) { ... } name和age不是实例变量,而是默认为公共的访问器方法(getter) 如果你改写: class Person( name: String, age: Int ) { ... } name和age只是实例变量,正如您所期望的,它们是
class Person( val name: String, val age: Int ) {
...
}
name
和age
不是实例变量,而是默认为公共的访问器方法(getter)
如果你改写:
class Person( name: String, age: Int ) {
...
}
name
和age
只是实例变量,正如您所期望的,它们是私有的
Scala的理念是更喜欢不可变的实例变量,那么拥有公共访问器方法就不再是问题了 私人鼓励独石。一旦仅仅因为类需要读取一些恰好是私有的变量而更容易将不相关的功能放入类中,类就会开始增长 这只是一个糟糕的默认值,也是Java中类超过1000行的主要原因之一 Scala默认为immutable,它删除了Java中人们经常使用private来限制(但不能删除,因为类自己的方法仍然可以改变变量)的大量错误类
在Scala中,可以通过等效语法访问方法和字段-因此,如果您现在有一个简单的属性,那么直接公开它的封装不会有任何损失,因为您可以选择稍后将其作为无参数方法公开,而无需您的调用方知道有关更改的任何信息。在第二个示例中,
name
和age
也可能只是构造函数参数,而不是实例变量,具体取决于它们在Person
主体中的使用方式。