Scala编程语言:1)Var不可变Map、Val可变Map和Var可变Map有什么区别?

16 浏览
0 Comments

Scala编程语言:1)Var不可变Map、Val可变Map和Var可变Map有什么区别?

这个问题的答案已经在这里了

什么是Scala中var和val定义的区别?

Var不可变Map、Val可变Map和Var可变Map之间的区别是什么?

这里附加的图像是相同的代码。

此外,为什么所有这些Map的定义都表现得好像它们是可变的?

scala> var var_m_map =  collection.mutable.Map(("key1",1), ("key2",2))
var_m_map: scala.collection.mutable.Map[String,Int] = Map(key2 -> 2, key1 -> 1)
scala> var_m_map += ("key30" -> 30)
res8: scala.collection.mutable.Map[String,Int] = Map(key30 -> 30, key2 -> 2, key1 -> 1)
scala> val val_m_map =  collection.mutable.Map(("key10",10), ("key20",20))
val_m_map: scala.collection.mutable.Map[String,Int] = Map(key20 -> 20, key10 -> 10)
scala> var_m_map += ("key30" -> 30)
res9: scala.collection.mutable.Map[String,Int] = Map(key30 -> 30, key2 -> 2, key1 -> 1)
scala> var var_i_map =  collection.immutable.Map(("key100",100), ("key200",200))
var_i_map: scala.collection.immutable.Map[String,Int] = Map(key100 -> 100, key200 -> 200)
scala> var_i_map += ("key300" -> 300)
scala> var_i_map
res11: scala.collection.immutable.Map[String,Int] = Map(key100 -> 100, key200 -> 200, key300 -> 300)
scala> var var_i_map2 = Map(("key700",700), ("key800",800))
var_i_map2: scala.collection.immutable.Map[String,Int] = Map(key700 -> 700, key800 -> 800)
scala> var_i_map2 += ("key900" -> 900)
scala> var_i_map2
res13: scala.collection.immutable.Map[String,Int] = Map(key700 -> 700, key800 -> 800, key900 -> 900)

admin 更改状态以发布 2023年5月23日
0
0 Comments

var var_i_map是对一个不可变Map可变引用

+=将元素添加到当前绑定到var_i_map的不可变Map中,返回一个新的不可变Map实例。该新实例被(重新)赋值给var_i_map

请注意,原始绑定到var_i_map的不可变集合没有改变,而是改变了可变的变量。

var var_i_map更改为val var_i_map,您的代码将无法编译,因为您尝试更改不可变变量。

0