我有一个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
}
this answer中的方法似乎对于检查地图是否为空是过大的。另外,接受的答案还会检查Map
是否包含要匹配的任何地图,我认为这不适用于我的情况
答案 0 :(得分:5)
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)
输出:
false
答案 1 :(得分:1)
Map
没有unapply()/unapplySeq()
方法,因此无法通过模式匹配对其进行解构。
正如@Luis所说,Nil
是List
的终点,与Map
无关。
答案 2 :(得分:0)
无需过多使用彭定康数学:
val map = Map.empty[String, String]
val result = map.nonEmpty
println(result)
// Output: false
或者,如果您坚持逻辑或逻辑不只是对/错:
val map = Map.empty[String, String]
map.isEmpty match {
case true =>
println("The map is empty")
case false =>
println("The map is not empty")
}
// Output: The map is empty