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

一个突出的原因是从案例类派生新类充其量是不推荐的,最坏的情况是危险的。为了允许用户(或 Scala 标准库作者)从这些类派生,它们可能不是案例类。

于 2013-01-07T19:11:41.333 回答