在下面的示例中,解决编译错误的最佳方法是什么?假设'm'必须是GenMap类型,并且我无法控制myFun的参数。
import scala.collection.GenMap
object Test {
def myFun(m: Map[Int, String]) = m
val m: GenMap[Int, String] = Map(1 -> "One", 2 -> "two")
//Build error here on m.seq
// Found scala.collection.Map[Int, String]
// Required scala.collection.immutable.Map[Int, String]
val result = myFun(m.seq)
}
编辑:
我应该更清楚。在我的实际用例中,我无法控制myFun,所以我必须传递一个Map。 'm'也来自另一个scala组件作为GenMap。我需要将一个转换为另一个,但是collection.Map和collection.immutable.Map之间似乎存在冲突
答案 0 :(得分:2)
m.seq.toMap
将解决您的问题。
根据API toMap
中显示的签名返回scala.collection.immutable.Map
,据说您的错误消息中需要该scala.collection.Map
。 seq
方法返回的{{1}}是一个更普遍的特征,除了作为不可变映射的父级之外,它也是可变和并发映射的父级。