假设我有以下函数定义:
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
. 我希望能够使用任何存在的迭代器函数(折叠、过滤器等),而不会出现“空迭代器上的下一个”异常。
您可以在 F# 中使用 seq 和 yield 执行此操作。我希望这Iterator.continually
会同样强大。
F# 示例:
seq {
for i in input |> yield i + i
}
PS我意识到我可以组合一堆函数,然后将它们传递给一个迭代器函数,但我试图以一种我可以在 F# 中的方式组合迭代器。