2

解决以下示例中的编译错误的最佳方法是什么?假设“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 之间似乎存在冲突

4

1 回答 1

2

m.seq.toMap将解决您的问题。

根据API toMap中提供的签名返回一个scala.collection.immutable.Map据说在您的错误消息中是必需的。scala.collection.Map该方法返回的seq是一个更一般的特征,它除了是不可变映射的父级之外,也是可变和并发映射的父级。

于 2012-10-02T11:18:11.993 回答