是否有任何特殊情况类表示空的ArrayBuffer
,可用于模式匹配,类似于Nil
的列表?模式匹配为空ArrayBuffer
而且为什么这个工程:
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
,而不是模式匹配。
'ArrayBuffer.isEmpty'似乎更适合非ADT! ...或者只是'toList'你的ArrayBuffer,除非它太昂贵,并且在那上面工作。 –