微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Scala – 链接两个隐式转换时如何模式匹配?

我编写了一个解析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,requiredjava.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] 举报,一经查实,本站将立刻删除。

相关推荐