是否有任何特殊情況類表示空的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,除非它太昂貴,並且在那上面工作。 –