Scala中的不可变和可变映射

时间:2013-08-01 06:47:56

标签: scala

val scan2 = new scala.collection.mutable.HashMap[String, Int]
var scan2 = new scala.collection.immutable.HashMap[String, Int]
我应该更喜欢或更好的哪一个,对我来说都做同样的工作。 这有点令我困惑。我是Scala的新手。

1 个答案:

答案 0 :(得分:1)

如果您从Java过来,您可能会发现可变版本更加熟悉,并且在Scala中重写Java代码时更容易使用。但是,从长远来看,我(和其他人)建议尽可能习惯使用和使用集合类的不可变形式。使用不可变数据(不可变集合,使用'val'而不是'var'等)在本质上更具功能性(如'函数式编程'样式),这是Scala值得探索的优势。例如,它在并发情况下更好地工作(不必担心锁定/同步对集合的访问以阻止它被意外修改等等)并且能够更好地推理代码的工作方式。您不应该发现重写类以使用不可变集合类型太难 - 考虑如何使用Java的String类(也是不可变的)。