2012-03-29 12 views
2

に+ =代入風変わり私はScalaの2.9をしようとしている次のことを考えてみましょう(と私はそれを好きに!):Scalaの文字列

scala> "hello" += " world" 
<console>:8: error: value += is not a member of java.lang.String 
     "hello" += " world" 

そして今

scala> var h = "hello " 
h: java.lang.String = "hello " 

scala> h += "world" 

scala> h 
res24: java.lang.String = hello world 

私は、文字列の両方のことを考えているだろう最初の例の式は、操作を許可するために自然に評価されます。この行動の正当な理由はありますか?

乾杯!

答えて

10

定数を変更することはできません。 "hello"は一定ですが、hはありません。

あなたは多くの意味がありません

"hello" = "hello" + " world" 

を書いています。

+0

aha。はい、それは理にかなっています。私は一日を通して自分自身のコピーを作っているコレクションを見てきました。乾杯! –

+1

実際にあなたのコレクションはおそらく自分自身のコピーを作っていないでしょう。その中で、不変なコレクションクラスのほとんどは共有状態で実装されています。コピーが作成されているように見えますが、はるかに効率的です –

+1

私はh = h + "world"のように見えますが、hはvar、valではなく – tuxSlayer

関連する問題