我想將可遍歷一次連接到可遍歷一次而不解析。 這是解決方案,我想出了爲含蓄,但我不知道是否我缺少一個本地的解決方案...在Scala中連接TraversableOnce對象?
object ImplicitTraversableOnce {
implicit def extendTraversableOnce[T](t : TraversableOnce[T]) = new TraversableOnceExtension(t)
}
class TraversableOnceExtension[T <: Any](t : TraversableOnce[T]) {
def ++ (t2:TraversableOnce[T]):TraversableOnce[T] = new concat(t.toIterator, t2.toIterator)
private class concat(i1:Iterator[T], i2:Iterator[T]) extends Iterator[T] {
private var isOnSecond = false
def hasNext:Boolean =
if (isOnSecond) i2.hasNext
else if (!i1.hasNext) {
isOnSecond = true
hasNext
}
else true
def next():T = if (isOnSecond) i2.next() else i1.next()
}
}
Maaaybe你會發現它有用:番石榴有一組CONCAT的'()''中和Iterators'方法['Iterables'(HTTP://docs.guava -libraries.googlecode.com/git/javadoc/com/google/common/collect/Iterables.html)。我知道這是Java,但作爲最後的手段,你可以轉換Scala - > Java - > Scala –