3

我想要这样的东西:

def unequalZip[A, B](a: Iterable[A], b: Iterable[B]) = Iterable[(Option[A], Option[B])]

其中较短可迭代的项目使用Nones与较长可迭代的项目匹配

4

3 回答 3

8

你要

a.zipAll(b, None, None)

如果您已经有选择,或者

a.map(x => Option(x)).zipAll(b.map(x => Option(x)), None, None)

否则。

于 2014-04-09T21:44:24.443 回答
2

def lift[A](a: Iterable[A]) = a map {Option.apply} def unequalZip[A, B](a: Iterable[A], b: Iterable[B]) = lift(a).zipAll(lift(b), None, None)

于 2014-04-09T22:01:32.960 回答
0

看看 zipAll。

/** 通过成对组合相应的元素,返回一个由这个 $coll 和另一个可迭代集合组成的 $coll。* 如果两个集合中的一个比另一个短, * 占位符元素用于将较短的集合扩展到较长的集合的长度。

于 2014-04-09T21:44:38.633 回答