【发布时间】:2019-02-24 21:33:19
【问题描述】:
我编写了一个解析 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 修复它?
【问题讨论】:
-
你能把匹配语句改成
x => if (x) "Y" else "N"吗? -
@AndyHayden 成功了,谢谢!你能告诉我为什么这有助于解决问题吗?我猜这是因为我们没有隐式声明真假值,但不太确定
标签: java scala collections pattern-matching