我将一些scala代码从2.12迁移到2.13,我有以下代码
def getMetrics(): java.util.Map[String, Double] ={
transformers.map{
case transformer => transformer match{
case t: EvaluationTransformFunction => t.getMetric.asJava
}
}.flatten.toMap.asJava
}
会产生错误
error: No implicit view available from java.util.Map[String,Double] => scala.collection.IterableOnce[B].
[ERROR] }.flatten.toMap.asJava
[ERROR] ^
你能解释一下这个错误是怎么回事吗?
1条答案
按热度按时间pkmbmrz71#
我们缺少了一些关于你正在操作的确切类型的信息,但想法是:
transformers.map(...)
的类型是Iterable[SomeJavaCollectionType]
flatten
只有在SomeJavaCollectionType
可以被“转换/“视为”Iterable[SomeOtherType]
时才有效,这样Iterable[SomeJavaCollectionType]
就可以被视为Iterable[Iterable[SomeOtherType]]
并因此变平SomeJavaCollectionType
,如果我读得正确,它似乎是JavaMap[String, Double]
我有点惊讶它在Scala 2.12中工作。也许有一个
import
可以让它在Scala 2.13中也能工作(即将“隐式视图”带入范围)。无论如何,我会去掉内部的
asJava
,只在方法的末尾转换为Java集合: