Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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_Scala Collections - Fatal编程技术网

Scala 从列表创建地图的更好方法

Scala 从列表创建地图的更好方法,scala,scala-collections,Scala,Scala Collections,我有一个函数,看起来像: def functionTrans(f: FunctionDec) = { // some FunctionDec manipulation f.name -> FuncEntry(/* something here*/) } Witch基本上对FunctionDec进行操作,并将其变成一对(字符串、FuncEntry)。 我还有一个映射[String,FuncEntry]名为varsEnv,还有一个列表[FunctionDec]名为d

我有一个函数,看起来像:

 def functionTrans(f: FunctionDec) = {

    // some FunctionDec manipulation

    f.name -> FuncEntry(/* something here*/)
  }
Witch基本上对FunctionDec进行操作,并将其变成一对(字符串、FuncEntry)。 我还有一个映射[String,FuncEntry]名为varsEnv,还有一个列表[FunctionDec]名为decs。我需要将该操作应用于所有列表并返回一个扩展映射。 我所做的看起来像:

val venvWithFunction = decs.foldLeft(varsEnv)(_ + functionTrans(_))

有一种更好的scala收集方法可以做到这一点。

decs.map(functionTrans)。toMap
应该足够了。

类似于:val-venvWithFunction=varsEnv++decs.map(functionTrans)?@Joselo如果
varsEnv
不是空的,那么这个:
varsEnv++decs.map(functionTrans).toMap
。您需要
toMap
列表[(a,B)]
转换为
映射[a,B]
@Ionut,而不使用。toMap也可以工作,您知道为什么吗?@Joselo有趣。直到现在我才知道,但是看起来好像有一个
++
重载,它需要一个元组集合,就像你的例子一样。