【问题标题】:Is there any analog for Scala 'zip' function in Groovy?Groovy 中的 Scala 'zip' 功能是否有任何模拟?
【发布时间】:2012-12-14 13:20:40
【问题描述】:

在 Scala 中我可以这样写:

val a = List(1, 2, 3)
val b = List(4, 5)
println(a zip b)

这将产生List((1,4), (2,5)) 作为输出。
现在我在 Groovy 中有两个集合,并希望以类似的方式压缩它们。最简单的方法是什么?

【问题讨论】:

标签: scala groovy


【解决方案1】:

Groovy 等效于 Scala 的 zipList#transpose,可以在列表列表上调用:

assert [[1, 2, 3], [4, 5]].transpose() == [[1, 4], [2, 5]]

【讨论】:

  • 请注意,Scala 也有转置功能,但要求列表大小相同,而 Groovy 会截断(就像 zip 一样)。
  • 我不知道为什么 Groovy 的家伙决定重命名所有这些著名的函数原语。
  • @AndresJaanTack Groovy 实际上从 Ruby 中获取了所有这些函数名称。
  • 当时有点好奇,因为Ruby actually has zip ...我也查了一下,Ruby的filterselect,而Groovy的findAll... Ruby都没有findAll Groovy 也没有 select
  • 再一次,Ruby 的名字来自 SmallTalk...SmallTalk 有 select,但没有 findAll,就像 Ruby,所以看起来是 Groovy 不合时宜(otoh SmallTalk like Groovy没有zip)
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 2021-08-20
  • 2022-07-11
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多