スカラ - どのようにパターンマッチには、2つの暗黙の型変換を連鎖するとき?

サンバ:

私は、メトリックデータを解析する方法を書いて、最初にある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は2つの暗黙の変換をチェーンしません。JavaConvertersを使用して、それを修正する方法はありますか?

アンディ・ヘイデン:

使用している場合/他のではなく、ブールチェックのための一致ステートメント:

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._...しかし、試合の文が同じ強制を行いませんが、明示的に行わなければならない(または上一致しjava.lang.Booleanた値) 。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=183463&siteId=1