我想要创建可变地图,其中包含字符串作为键,MutableList作为值。
val myMap = scala.collection.mutable.Map[String, MutableList]()就像这样:
mymap = Map("a" -> MutableList(1, 2, 3), "b" -> MutableList(5, 6, 7))但是,当我试图创建它时,会引发错误:
scala> var myval = scala.collection.mutable.Map[String, scala.collection.mutable.MutableList]()
<console>:10: error: class MutableList takes type parameters
var myval = scala.collection.mutable.Map[String, scala.collection.mutable.MutableList]()发布于 2015-08-06 06:03:37
MutableList[A]期望一种类型的计量器。您应该将var用于可变状态,而不是val:
import scala.collection.mutable.{Map => MutableMap, MutableList}
var myMap = MutableMap[String, MutableList[Int]]()
myMap = MutableMap("a" -> MutableList(1, 2, 3), "b" -> MutableList(5, 6, 7))发布于 2015-08-06 15:00:52
我不同意@jarandaf关于var和可变状态的观点:
您应该将var用于可变状态,而不是使用val。
对我来说,使用var与使用可变的数据结构是正交的。这样使用它一点问题都没有:
scala> import scala.collection.mutable.{Map => MutableMap, MutableList}
scala> val myMap = MutableMap("a" -> MutableList(1, 2, 3), "b" -> MutableList(5, 6, 7))而且您仍然可以更改映射的值(从不,使用可变值作为键,除非您想要进行一些有趣的调试),可以使用这样的变异:
scala> myMap.get("a").map(_ += 42)
scala> myMap
res1: MutableMap[String,MutableList[Int]] = Map("b" -> MutableList(5, 6, 7), "a" -> MutableList(1, 2, 3, 42))实际上,如果我使用var,我通常使用不变的数据结构,因为对我来说,很少有理由同时使用var、和这两个可变的数据结构。
scala> var myMap2 = Map("a" -> List(1,2,3))
scala> myMap2 = myMap2.updated("a",myMap2("a") :+ 42)
myMap2: scala.collection.immutable.Map[String,List[Int]] = Map(a -> List(1, 2, 3, 42))https://stackoverflow.com/questions/31847793
复制相似问题