是否有任何特殊的案例类用于表示可用于模式匹配的空ArrayBuffer,类似于列表的Nil?
这也是为什么这样做:
scala> collection.mutable.ArrayBuffer.empty == Nil res11: Boolean = true
虽然这不是:
scala> collection.mutable.ArrayBuffer() match { case Nil => 1 } <console>:8: error: pattern type is incompatible with expected type; found : scala.collection.immutable.Nil.type required: scala.collection.mutable.ArrayBuffer[Nothing]
UPDATE
在考虑之后,我认为没有这样的案例类.虽然Nil的存在对于List工作至关重要,但阵列不需要这种特殊结构.
我找到了一个空匹配检查的解决方法,在大多数情况下都可以使用:
collection.mutable.ArrayBuffer(2) match { case collection.mutable.ArrayBuffer(v,_*) => v * 2 case _ => 0 }
我首先检查数组是否至少有一个元素,否则它应该为空.
事实证明,我可以使用ArrayBuffer.isEmpty而不是模式匹配.