2
Scala不可變隊列的foreach
方法是否總是按照隊列中預期的順序進行處理,或者是否存在確保順序的方法?或者我必須使用循環+ dequeue
?Queue.foreach是否正確排序?
Scala不可變隊列的foreach
方法是否總是按照隊列中預期的順序進行處理,或者是否存在確保順序的方法?或者我必須使用循環+ dequeue
?Queue.foreach是否正確排序?
scala.collection.immutable.Queue
是scala.collection.Seq
。請參閱Seq
documentation:
序列是Iterable類的可迭代集合的特例。與迭代不同,序列總是具有定義的元素順序。
所以,是的,你會得到相同的元素與foreach
和帶環+ dequeue
訂購。
如果你不信任的文檔,你可以看看實現:
Queue#foreach
從IterableLike
和implemented繼承這樣的:
def foreach[U](f: A => U): Unit = iterator.foreach(f)
Queue#iterator
是implemented這樣的:
override def iterator: Iterator[A] = (out ::: in.reverse).iterator
And Queue#dequeue
returns th e第一個元素out
,如果有的話,或者最後一個元素in
。所以你會得到相同的元素順序。
實際上,在這種情況下,我更重視文檔而不是實現,因爲我認爲文檔承諾這種行爲不僅僅是「意外」,而是實際縮進並保持這種狀態。 –