使用var和val访问scala中的修改器

时间:2016-08-26 10:45:23

标签: scala

我对访问修改器中使用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

谢谢,

2 个答案:

答案 0 :(得分:3)

你应该记住变量只是引用。因此,当您使用val p = new Person("Alvin Alexander")创建变量时,这意味着您无法为其分配新的引用。在Person案例中它是可能的。

正如您在创建Person时所见,p将始终引用相同的p对象。您无法创建其他var name并将其分配给p

但任何人实例都有Person变量,可以重新分配给新字符串。

因此,最终{{1}}引用了可变{{1}}实例。

答案 1 :(得分:0)

valvar仅适用于下一个变量(在其引用上),它不表示变量是否可变。在您的示例中,p是可变的(因为可以更改p.name)。但你不能写p = anotherPerson