我是新来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