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有趣。直到现在我才知道,但是看起来好像有一个++
重载,它需要一个元组集合,就像你的例子一样。