是否可以Nil为地图创建?
我的意思是类似的东西:
List() match {
case Nil => true
}
Run Code Online (Sandbox Code Playgroud)
但有地图:
Map() match {
case NilMap => true
}
Run Code Online (Sandbox Code Playgroud)
我尝试实现它,但遇到了麻烦:
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
}
Run Code Online (Sandbox Code Playgroud)
但id无法编译...
无论如何,这似乎可行。
这称为布尔提取器。
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |