我对访问修改器中使用var和val感到困惑, name是var,因此我们可以更改它,没关系。 但是p是val,我们如何才能改变 p.name =“Fred Flintstone”
scala> class Person(var name: String)
defined class Person
scala> val p = new Person("Alvin Alexander")
p: Person = Person@139b7bb
scala> p.name
res0: String = Alvin Alexander
scala> p.name = "Fred Flintstone"
p.name: String = Fred Flintstone
谢谢,
答案 0 :(得分:3)
你应该记住变量只是引用。因此,当您使用val p = new Person("Alvin Alexander")
创建变量时,这意味着您无法为其分配新的引用。在Person
案例中它是可能的。
正如您在创建Person
时所见,p将始终引用相同的p
对象。您无法创建其他var name
并将其分配给p
但任何人实例都有Person
变量,可以重新分配给新字符串。
因此,最终{{1}}引用了可变{{1}}实例。
答案 1 :(得分:0)
val
或var
仅适用于下一个变量(在其引用上),它不表示变量是否可变。在您的示例中,p
是可变的(因为可以更改p.name
)。但你不能写p = anotherPerson
。