我是新來Scala和我有一個函數如下怪異的行爲:斯卡拉 - 與Iterator.toList
def selectSame(messages: BufferedIterator[Int]) = {
val head = messages.head
messages.takeWhile(_ == head)
}
這是從一個緩衝的迭代器只選擇相匹配的頭elems的。我隨後使用此代碼:
val messageStream = List(1,1,1,2,2,3,3)
if (!messageStream.isEmpty) {
var lastTimeStamp = messageStream.head.timestamp
while (!messageStream.isEmpty) {
val messages = selectSame(messageStream).toList
println(messages)
}
一旦如預期第一執行我得到(1,1,1),但後來我只得到列表(2),就像如果我失去了一個元素向下行...可能我正在用迭代器/列表做錯,但我在這裏有點失落。
對不起,我的意思List.iterator.buffered。道歉 – user221218 2013-05-03 14:54:14