Scala:在包装器中加入带有值的迭代器
Scala: join iterators with values in a wrapper
我有以下类型:A
、B
和C
,所以B <: A
和C <: A
我需要得到像这样工作的 Iterator[A]
:
如果当前值是B
类型,那么return B
如果当前值是 C
类型,则调用函数 parse(c: C) : Iterator[B]
然后使用此迭代器直到它耗尽。然后继续 "parent" 迭代器的值。
在 Scala 中这样做的最佳方法是什么?
使用模式匹配和flatMap:
val itA: Iterator[A] = // ...
val itB: Iterator[B] = itA.flatMap(a => a match {
case b: B => Iterator(b)
case c: C => parse(c)
})
我有以下类型:A
、B
和C
,所以B <: A
和C <: A
我需要得到像这样工作的 Iterator[A]
:
如果当前值是
B
类型,那么returnB
如果当前值是
C
类型,则调用函数parse(c: C) : Iterator[B]
然后使用此迭代器直到它耗尽。然后继续 "parent" 迭代器的值。
在 Scala 中这样做的最佳方法是什么?
使用模式匹配和flatMap:
val itA: Iterator[A] = // ...
val itB: Iterator[B] = itA.flatMap(a => a match {
case b: B => Iterator(b)
case c: C => parse(c)
})