作为Map值的列表列表无法编译

时间:2016-08-23 02:02:41

标签: scala

我在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

2 个答案:

答案 0 :(得分:5)

listInMap += list1相当于listInMap = listInMap + list1+未在List中为最新的scala库(2.11.8)定义+运算符(在2.7中标记为已弃用)。因此,listInMap运算符只需使用最新的scala库将list1listInMap = 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))