是否可以为地图创建Nil
?
我的意思是类似的东西
List() match {
case Nil => true
}
但有地图:
Map() match {
case NilMap => true
}
我试图实现它,但是我被困住了:
object NilMap extends Map[Nothing, Nothin] {
def unapply[K,V](map: Map[K,V]): Option[Map[K,V]] =
if(map.isEmpty) Some(map) else None
}
但是id无法编译...
答案 0 :(得分:8)
无论如何,这似乎可行。
这称为布尔提取器。
object NilMap {
def unapply(map: Map[_, _]): Boolean =
map.isEmpty
}
Map.empty[String, Int] match { case NilMap() => true; case _ => false } // true
Map("a" -> 10) match { case NilMap() => true; case _ => false } // false