我在Scala中有一个Map,其中值是列表列表。我尝试使用以下代码添加值:
var map = Map[String,List[List[String]]]()
val list1 = List ("A111", "B111")
var listInMap = map.getOrElse("abc", List[List[String]]())
listInMap += list1 // this line does not compile
map += ("abc" -> listInMap)
问题是在listInMap += list1
行中它会抛出type mismatch; found : List[String] required: String
。如果我需要在列表中添加列表,为什么需要String?我需要将list1
添加到listInMap
答案 0 :(得分:5)
listInMap += list1
相当于listInMap = listInMap + list1
。
+
未在List
中为最新的scala库(2.11.8)定义+
运算符(在2.7中标记为已弃用)。因此,listInMap
运算符只需使用最新的scala库将list1
和listInMap = listInMap :+ list1
的字符串值连接起来。
对于最新的scala,您可以使用mySlider.addTarget(self, action: "sliderDidEndSliding:", forControlEvents: .UIControlEventTouchUpInside)
另外,请检查:https://stackoverflow.com/a/7794297/1433665因为scala中的列表附加了O(n)的复杂性
答案 1 :(得分:1)
您的问题是没有以正确的深度/级别插入list1
。
这将编译。
. . .
map += ("abc" -> (listInMap ++ List(list1)))
map("abc") // result: List[List[String]] = List(List(A111, B111))