什么是Clojure相当于Scala的zipWithIndex?

时间:2015-12-28 01:35:03

标签: clojure

Scala Seq使用zipWithIndex方法:

  

def zipWithIndex[A1 >: A, That](implicit bf: CanBuildFrom[Seq[A], (A1, Int), That]): That

     

使用其索引来拉开此序列。

     

返回:包含由该序列的所有元素组成的对的新序列与其索引配对。指数从0开始。

     

示例:List("a", "b", "c").zipWithIndex = List(("a", 0), ("b", 1), ("c", 2))

Clojure中的等效函数是什么?

2 个答案:

答案 0 :(得分:7)

Clojure的map-indexed将为您提供集合中元素的索引列表。

if (memefontsize > 10) {

  memefontsize = memefontsize - 1;
  memedotcomtop.fontSize(memefontsize);
  layer.draw()

}
if (memefontsize2 > 10) {

  memefontsize2 = memefontsize2 - 1;
  memedotcomtop2.fontSize(memefontsize2);
  layer.draw();

}

答案 1 :(得分:1)

正如@jmargolisvt回答map-indexed是一个很好的解决方案。

由于您的示例使用集合项反转了索引,因此您始终可以使用reverse进行组合:
(map-indexed (comp reverse list) ["a", "b", "c"])

或映射两个序列:
(map list ["a", "b", "c"] (range))