Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用循环在Scala中创建贴图_Scala_For Loop_Dictionary_Intellij Idea - Fatal编程技术网

使用循环在Scala中创建贴图

使用循环在Scala中创建贴图,scala,for-loop,dictionary,intellij-idea,Scala,For Loop,Dictionary,Intellij Idea,我试图在得到列表中每个项目的结果后创建一个映射。以下是我迄今为止所做的尝试: val sourceList: List[(Int, Int)] = .... val resultMap: Map[Int, Int] = for(srcItem <- sourceList) { val result: Int = someFunction(srcItem._1) Map(srcItem._1 -> result) } val sourceList:List[(Int,Int)

我试图在得到列表中每个项目的结果后创建一个映射。以下是我迄今为止所做的尝试:

val sourceList: List[(Int, Int)] = ....
val resultMap: Map[Int, Int] = for(srcItem <- sourceList) {
  val result: Int = someFunction(srcItem._1)
  Map(srcItem._1 -> result)
}
val sourceList:List[(Int,Int)]=。。。。
val resultMap:Map[Int,Int]=for(srcItem结果)
}

但是我在
IntelliJ
中遇到了类型不匹配错误,我在这里肯定没有编写正确的语法。我认为我不能使用
yield
,因为我不想要地图列表。使用for循环创建贴图的正确方法是什么。有什么建议吗

最简单的方法是从元组列表中创建映射:

val resultMap = sourceList.map(item => (item._1, someFunction(item._1))).toMap
或者,以一元的方式:

val listOfTuples = for {
  (value, _) <- sourceList
} yield (value, someFunction(value))

val resultMap = listOfTuples.toMap
最后,如果您真的想避免生成额外的对象,您可以改为使用,并使用
+=
.put

val resultMap = sourceList.view
                          .map(item => (item._1, someFunction(item._1)))
                          .toMap