2013-08-01 92 views
0
val scan2 = new scala.collection.mutable.HashMap[String, Int] 
var scan2 = new scala.collection.immutable.HashMap[String, Int] 

哪一個我應該引用或更好,對我來說都是做同樣的工作。 這讓我有些困惑。我是斯卡拉新手。Scala中的不可變和可變映射

+0

在長期發展中使用不可變的一個 – 4lex1v

回答

1

如果您是從Java開始的,您可能會發現可變版本更加熟悉,並且在Scala中重寫Java代碼時更易於使用。然而,從長遠來看,我(和其他人)建議儘可能習慣使用和使用集合類的不可變形式。使用不可變數據(不可變集合,使用'val',而不是'var'等)在本質上更具功能性(如'函數式編程'風格),這是Scala值得探索的一個優勢。例如,它可以在併發情況下更好地工作(不必擔心鎖定/同步對集合的訪問以防止它被意外修改等),並且可以更好地推理代碼的工作方式。你不應該覺得很難重寫你的類來處理不可變的集合類型 - 想想你如何使用Java的String類(這也是不可變的)。

+0

感謝您的答案。在Web應用程序的角度來看,不可變的映射是沒有多大用處,所有我們必須通過添加或刪除來修改集合。所以我明白的是,如果我想要一個不可變的集合,我應該使用val關鍵字的可變集合。那麼我不能修改。所以你如何處理這種類型的問題。 –

相關問題