說我有下面的函數定義:撰寫迭代
def print(input:Iterator[String]) : Iterator[String] = {
Iterator.continually {
val item = input.next
item + item
}
}
給出的輸入
List("1", "2", "3").iterator
我想要的輸出等於
List("11", "22", "33").iterator
的問題是,當我使用Iterator.continually
,我不得不使用takeWhile
遍歷列表。我希望能夠使用存在的任何Iterator函數(摺疊,過濾器等),而不會在「空迭代器」異常處得到「下一個」。
您可以在F#中使用seq和yield來做到這一點。我希望Iterator.continually
會一樣健壯。
F#例如:
seq {
for i in input |> yield i + i
}
附:我意識到我可以編寫一堆函數,然後將它們傳遞給Iterator函數,但我試圖以我在F#中可以使用的方式編寫迭代器。
您是否已經知道[Streams](http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.Stream)? – DaoWen
這個問題對我來說根本不清楚。你可以在'input'上調用'map'來完成該操作('input.map(x => x + x)'),但是這似乎並不能解決你的用例,只是你的例子。但是,我不知道你的用例是什麼。 –
我不瞭解溪流,他們對這類問題更好嗎? –