我编写了一个解析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
但之后我在模式匹配true和false值时遇到错误:模式类型与期望的类型不兼容,找到:Boolean,required:java.lang.Boolean
据我所知,Scala没有链接两个隐式转换.有没有办法使用JavaConverters修复它?
解决方法:
使用if / else而不是匹配语句进行布尔检查:
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在这里)可以通过import scala.collection.JavaConverters ._…强制转换为布尔值但是匹配语句不会做同样的强制,但必须显式(或匹配java.lang.Boolean值).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。