我编写了一个解析 Metrics 数据的方法,起初遇到了 transactionMap 类型的问题,它是 java.util.Map
。我使用 JavaConverters 解决了它。
def parseMetrics(metric: Metric) = {
import scala.collection.JavaConverters._
metric.transactionMap.asScala.values.map {
case false => "N"
case true => "Y"
}.toList
但在那之后我在模式匹配真假值时遇到错误:
pattern type is incompatible with expected type, found: Boolean, required: java.lang.Boolean
据我了解,Scala 不会链接两个隐式转换。有没有办法使用 JavaConverters 修复它?
最佳答案
使用 if/else 而不是 match 语句进行 boolean 检查:
def parseMetrics(metric: Metric) = {
import scala.collection.JavaConverters._
metric.transactionMap.asScala.values.map {
x => if (x) "Y" else "N"
}.toList
我怀疑在 if 语句中
java.lang.Boolean
(我假设 x
在这里)可以通过 Boolean
被强制为 import scala.collection.JavaConverters._
...但 match 语句不会执行相同的强制,但必须明确做出(或匹配在 java.lang.Boolean
值上)。关于java - Scala - 链接两个隐式转换时如何进行模式匹配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54856780/