对于地图,则为零;对于列表,则为零

时间:2019-05-15 23:13:17

标签: scala maps

是否可以为地图创建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无法编译...

1 个答案:

答案 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