Scala toMap类型转换问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala toMap类型转换问题相关的知识,希望对你有一定的参考价值。
我有以下简化代码来表示我在scala toMap转换时遇到的编译问题。
码
def test() : Option[Map[String, String]] = {
val someMap = Map("" -> List.empty[String] )
someMap
.get("")
.flatMap(_.headOption)
.map { span =>
val map = mutable.Map.empty[String, String]
map.toMap
}}
我收到这个错误
多态表达式无法实例化为期望的类型;发现:[T,U] scala.collection.immutable.Map [T,U]必需:scala.collection.concurrent.Map [String,String] map.toMap
不知道如何解决这个问题。我不能改变函数的返回类型,因为它预期返回Option[Map[String, String]]
谢谢,桑迪
导入scala.collection.mutable
后,您的代码会编译。您得到的错误表明您的测试函数需要返回scala.collection.concurrent.Map[String,String]
类型。我能想到的唯一原因是你在宣布你的功能之前已经在某处导入了scala.collection.concurrent.Map
。
因此,immutable.Map类型被concurrent.Map类型屏蔽,并且通过简单地使用“Map”实际上声明了Option[scala.collection.concurrent.Map[String, String]]
类型的返回,因此编译错误。
尝试删除导入或使用返回类型声明(scala.collection.immutable.Map
)中的完整路径。
您正在尝试在返回类型中使用immutable
Map,但是返回mutable.Map
def test() : Option[Map[String, String]] = {
val someMap = Map("" -> List.empty[String] )
someMap
.get("")
.flatMap(_.headOption)
.map { span =>
Map.empty[String, String]
}
}
以上是关于Scala toMap类型转换问题的主要内容,如果未能解决你的问题,请参考以下文章
linux打开终端如何启动scala,如何在终端下运行Scala代码片段?