如何在中使用自动增量索引来理解Scala

如何在中使用自动增量索引来理解Scala,scala,for-comprehension,Scala,For Comprehension,在Scala中是否可以使用自动递增计数器进行理解 差不多 for (element <- elements; val counter = counter+1) yield NewElement(element, counter) for(element我相信,您正在寻找在和其他集合上可用的zipWithIndex方法。下面是它的用法的一个小示例: scala> val list = List("a", "b", "c") list: List[java.lang.String] =

在Scala中是否可以使用自动递增计数器进行理解

差不多

for (element <- elements; val counter = counter+1) yield NewElement(element, counter)

for(element我相信,您正在寻找在和其他集合上可用的
zipWithIndex
方法。下面是它的用法的一个小示例:

scala> val list = List("a", "b", "c")
list: List[java.lang.String] = List(a, b, c)

scala> list.zipWithIndex
res0: List[(java.lang.String, Int)] = List((a,0), (b,1), (c,2))

scala> list.zipWithIndex.map{case (elem, idx) => elem + " with index " + idx}
res1: List[java.lang.String] = List(a with index 0, b with index 1, c with index 2)

scala> for ((elem, idx) <- list.zipWithIndex) yield elem + " with index " + idx
res2: List[java.lang.String] = List(a with index 0, b with index 1, c with index 2)
scala>val list=list(“a”、“b”、“c”)
list:list[java.lang.String]=list(a、b、c)
scala>list.zipWithIndex
res0:List[(java.lang.String,Int)]=List((a,0)、(b,1)、(c,2))
scala>list.zipWithIndex.map{case(elem,idx)=>elem+,索引为“+idx}”
res1:List[java.lang.String]=List(a带索引0,b带索引1,c带索引2)

scala>for((elem,idx)A for comprehension不像for循环,因为这些术语是针对前一个术语进行评估的。作为一个例子,请看下面的结果。我认为这不是您想要的:

    scala> val elements = List("a", "b", "c", "d")
elements: List[java.lang.String] = List(a, b, c, d)

scala> for (e <- elements; i <- 0 until elements.length) yield (e, i)
res2: List[(java.lang.String, Int)] = List((a,0), (a,1), (a,2), (a,3), (b,0), (b,1), (b,2), (b,3), (c,0), (c,1), (c,2), (c,3), (d,0), (d,1), (d,2), (d,3))
scala>val元素=列表(“a”、“b”、“c”、“d”)
元素:List[java.lang.String]=List(a、b、c、d)

(谢谢!现在我明白了这个方法的目的:)是的,这就是为什么我不明白它是否可行的原因