在Scala中实现“ zipLongest”的最佳方法

用户名

我需要在Scala中实现“ zipLongest”功能;也就是说,将两个序列成对组合在一起,如果一个序列长于另一个序列,则使用默认值。(与标准zip方法不同,标准方法只会截断到最短的序列。)

我直接实现了它,如下所示:

def zipLongest[T](xs: Seq[T], ys: Seq[T], default: T): Seq[(T, T)] = (xs, ys) match {
  case (Seq(), Seq())           => Seq()
  case (Seq(), y +: rest)       => (default, y) +: zipLongest(Seq(), rest, default)
  case (x +: rest, Seq())       => (x, default) +: zipLongest(rest, Seq(), default)
  case (x +: restX, y +: restY) => (x, y) +: zipLongest(restX, restY, default)
}

有更好的方法吗?

马思

用途zipAll

scala> val l1 = List(1,2,3)
l1: List[Int] = List(1, 2, 3)

scala> val l2 = List("a","b")
l2: List[String] = List(a, b)

scala> l1.zipAll(l2,0,".")
res0: List[(Int, String)] = List((1,a), (2,b), (3,.))

如果要对第一个和第二个seq使用相同的默认值:

scala> def zipLongest[T](xs:Seq[T], ys:Seq[T], default:T) = xs.zipAll(ys, default, default)
zipLongest: [T](xs: Seq[T], ys: Seq[T], default: T)Seq[(T, T)]

scala> val l3 = List(4,5,6,7)
l3: List[Int] = List(4, 5, 6, 7)

scala> zipLongest(l1,l3,0)
res1: Seq[(Int, Int)] = List((1,4), (2,5), (3,6), (0,7))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Scala中实现“ zipLongest”的最佳方法

来自分类Dev

如何在Rx中实现ZipLongest?

来自分类Dev

在MeteorJS中实现单例的最佳方法

来自分类Dev

在Rails中实现友谊模型的最佳方法

来自分类Dev

在python熊猫中实现Apriori的最佳方法

来自分类Dev

在Java中实现分页的最佳方法

来自分类Dev

在Java中实现枚举类的最佳方法

来自分类Dev

LRU在Java中快速实现的最佳方法

来自分类Dev

在Rails中实现友谊模型的最佳方法

来自分类Dev

在MeteorJS中实现单例的最佳方法

来自分类Dev

在iOS中实现离线地图的最佳方法

来自分类Dev

在Swift中实现指针的最佳方法

来自分类Dev

在Scala中实现类型类实例定义的更好方法

来自分类Dev

如何在Java中实现Scala Apply方法

来自分类Dev

如何在Scala中实现多态方法的最小模拟?

来自分类Dev

为什么在scala中无法在实现的基类中提供抽象重写方法的实现

来自分类Dev

实现strcpy函数的最佳方法

来自分类Dev

实现UICollectionViewDataSource协议的最佳方法?

来自分类Dev

实现轮询服务的最佳方法

来自分类Dev

实现此UI的最佳方法?

来自分类Dev

在SWT / JFace中实现多选组合的最佳方法是什么?

来自分类Dev

在Go中实现信号量的最佳方法是什么

来自分类Dev

在iOS中实现下拉UI的最佳方法(Swift)

来自分类Dev

在Java中实现边缘加权图的最佳方法

来自分类Dev

在C ++中实现回调的最佳方法是什么

来自分类Dev

在Android中实现View.OnClickListener的最佳方法

来自分类Dev

在Elixir中实现外/内循环的最佳方法

来自分类Dev

在Android中实现Material Design菜单的最佳方法是哪种?

来自分类Dev

在给定方案中实现承诺的最佳方法是什么?

Related 相关文章

热门标签

归档