我想要这样的事情:
def unequalZip[A, B](a: Iterable[A], b: Iterable[B]) = Iterable[(Option[A], Option[B])]
其中较短的iterable中的项目与使用None
s的较长可迭代项目相匹配
答案 0 :(得分:7)
你想要
a.zipAll(b, None, None)
如果您已有选项,或
a.map(x => Option(x)).zipAll(b.map(x => Option(x)), None, None)
否则。
答案 1 :(得分: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)
答案 2 :(得分:0)
看一下zipAll。
/ **返回从$ coll和另一个iterable形成的$ coll 集合*通过成对组合相应的元素。 * 如果两个系列中的一个比另一个短,* 占位符元素用于将较短的集合扩展为 长度更长。