Scala 为什么不';定义为案例类的不可变映射具体类?
如果有人想在整个Scala 为什么不';定义为案例类的不可变映射具体类?,scala,map,pattern-matching,Scala,Map,Pattern Matching,如果有人想在整个映射对象上应用模式匹配,该怎么办 例如(虽然不是编译): 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 cod
映射
对象上应用模式匹配,该怎么办
例如(虽然不是编译):
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
定义为案例类
- 防止内部字段封装的案例类?(如
和key1
…)value1
- Case类不适用于泛型类型参数
- 很少使用匹配整个地图(通常没有意义)