我有一个Map,如果不为空,我希望有不同的行为。我不知道如何匹配一个空的地图。我已经查阅了其他答案和模式匹配文档,但无法弄清楚。我认为这Nil可能会像列表一样工作,但事实并非如此。我也似乎无法对阵Map(),Map[String, String].empty或Map[String, String]()
myMap match {
// doesn't work
case Nil => false
case _ => true
}
myMap match {
// also doesn't work
case Map[String, String]() => false
case _ => true
}
Run Code Online (Sandbox Code Playgroud)
此答案中的方法似乎对于检查Map是否为空是过大的。此外,接受的答案还会检查,是否Map包含要匹配的任何地图,我认为这不适用于我的情况
小智 6
Map不会为任何提取器提供unapply()/unapplySeq()开箱即用的方法,因此无法在模式匹配中匹配它的键值对。但是,如果您只需要在地图为空的情况下进行匹配,则可以:
val map = Map.empty[String, String]
val result = map match {
case m:Map[String, String] if m.isEmpty => false
case _ => true
}
println(result)
Run Code Online (Sandbox Code Playgroud)
输出:
false
Run Code Online (Sandbox Code Playgroud)