スカラーでのパターンマッチングで、以下のような現象を引き起こすことはできません。私はprintln(typesPattern(Map("a"→10)))
を以下に機能上呼び出すと、私は私が持っているException in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer at scala.runtime.BoxesRunTime.unboxToInt(BoxesRunTime.java:101) at scala.Tuple2._1$mcI$sp(Tuple2.scala:20)
スカラ+パターンマッチング+文字列オートボックス
最初の質問は、「MAP [ストリング]> intは] MAP [INTと一致なっている理由で次のエラーを取得する
def typesPattern(x:Any)= x match{
case s:String⇒ s.length
case n:Map[Int,Int]⇒println("Map[Int,Int]");var a = n.iterator.next();println(a._1);println(a._2);n.size;
case n:Map[a,b]⇒println("Map[a,b]");n.size;
case m:Map[_,_]⇒ m.size
case _ ⇒ -1
}
}
INT]? "の場合は、MAP[_,_]
と一致する必要があります。
興味深いことにIは、パターンマッチングコードを編集して、地図とプリントキーと値のペアからタプルを抽出するコードを取り出すとき
`def typesPattern(x:Any)= x match{
case s:String⇒ s.length
case n:Map[Int,Int]⇒println("Map[Int,Int]");n.size;
case n:Map[a,b]⇒println("Map[a,b]");n.size;
case m:Map[_,_]⇒ m.size
case _ ⇒ -1
}
}`
今のように同じ呼び出し以前println(typesPattern(Map("a"→10)))
が行う一致MAP [INT、INT]問題なく、サイズを印刷します。
Map[Int,Int]
1
2番目の質問 「WHY SCALAは問題なく(私はまだだろうか?)MAP [INT-> INT]でMAPを[ストリング]> INT]一致させることができますTHIS TIME?
私はそれを逃しました。それは応答のために私の質問に感謝します。 – Gurupraveen