1

Mapオブジェクト全体にパターン マッチングを適用したい場合はどうでしょうか。

例(コンパイルではありませんが)は次のようになります。

def main(args: Array[String]) {
    val m: Map[String, Int] = Map("a" -> 1, "b" -> 2) //scala.collection.immutable.Map2
    m match {
      case Map2("a",1,"b",2)  => println("matched")   //conceptual code line 
      case _ => println("not matched")
    }
}

Map2ケースクラスとしての定義を妨げている考えられる理由は何ですか?

  • ケースクラスが内部フィールドのカプセル化を妨げていますか? (好きkey1value1...)
  • ケースクラスはジェネリック型パラメーターには適用されませんか?
  • マップ全体を一致させるというまれな使用法 (しばしば無意味になります)?
4

1 に答える 1

3

顕著な理由の 1 つは、ケース クラスから新しいクラスを派生させることは、せいぜい非推奨であり、最悪の場合危険であるということです。ユーザー (または Scala 標準ライブラリの作成者) がこれらのクラスから派生できるようにするために、それらはケース クラスではない場合があります。

于 2013-01-07T19:11:41.333 に答える