【问题标题】:Type alias for immutable collections不可变集合的类型别名
【发布时间】:2012-10-02 20:22:15
【问题描述】:

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

【问题讨论】:

    标签: scala scala-collections


    【解决方案1】:

    m.seq.toMap 会解决你的问题。

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

    【讨论】:

    • 谢谢。您能否提供有关为什么最初不起作用的任何见解?
    • 当然。查看更新。你的问题中几乎有解释。
    • 我以前并不欣赏这个“母公司”业务。以前只是假设它是等效的。显然不是。
    猜你喜欢
    • 2021-08-10
    • 2014-01-10
    • 1970-01-01
    • 2014-07-05
    • 2016-07-23
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多