我使用的文件是scala BufferedSource
,并且iter
对象为Pattern: iter: Iterator[Char]
。
我将这个char迭代器传递给一个函数,该函数迭代char并将一些字符添加到StringBuilder。
当使用需要前一个,当前和下一个字符的辅助函数迭代字符时能够使用此函数...
我该如何管理这样的事情?
答案 0 :(得分:1)
代码,有时甚至是伪代码,通常比您提供的代码模糊描述更具启发性和帮助性。
您可以使用sliding
来获取上一个/当前/下一个。
val ci = "abcdefghijklmnopqrstuvwxyz".toIterator // Iterator[Char]
val sci = ci.sliding(3) // GroupedIterator[Char]
sci.next // List[Char] = List(a, b, c)
sci.next // List[Char] = List(b, c, d)
但这通常会产生自己的麻烦,因为收到的代码并不知道它是否在查看第一次迭代("之前的#34; char还没有被处理过)或决赛("下一个" char赢了再也没见过。)
简单地缓冲迭代器可能更有利,这样你就可以在使用它之前查看即将到来的元素。
val ci = "ab".toIterator // Iterator[Char] = non-empty iterator
val bci = ci.buffered // scala.collection.BufferedIterator[Char]
bci.next // Char = a
bci.hasNext // Boolean = true
bci.head // Char = b
bci.next // Char = b
bci.hasNext // Boolean = false