2016-08-26 10 views
0

アクセス修飾子にvarとvalを混乱させているので、 という名前はvarですので、変更できます。 しかし、P、それは、我々が p.name = "フレッド・フリントストーン" を(それの参照上)のみ、次の変数のためのvarとvalのscalaのアクセス修飾子

scala> class Person(var name: String) 
defined class Person 

scala> val p = new Person("Alvin Alexander") 
p: Person = [email protected] 

scala> p.name 
res0: String = Alvin Alexander 

scala> p.name = "Fred Flintstone" 
p.name: String = Fred Flintstone 

おかげで、

+0

あなたは既にあなた自身の質問に答えました:「pは 'val'です、' p.name = "Fred Flintstone" '"をどのように変更できるか。ヒント:*「val」は何ですか?そして、あなたは何を変えていますか?そして、それはあなたが 'val'を変えているのですか? –

答えて

0

valまたはvar作品を変更することができますどのように、Valで変数が可変であるかどうかを示すものではありません。あなたの例では、pは変更可能です(p.nameを変更できるため)。しかし、p = anotherPersonと書くことはできません。

3

変数は単なる参考値であることに注意してください。したがって、valで変数を作成すると、新しい参照を割り当てることができなくなります。 varケースで可能です。

val p = new Person("Alvin Alexander")を作成するときに表示されるように、pは常にPersonオブジェクトを参照します。別のPersonを作成してpに割り当てることはできません

しかし、どの人のインスタンスも、新しい文字列に再割り当て可能な変数var nameを持っています。

最終的にpは、Personインスタンスへの参照を持ちます。

関連する問題