2016-02-18 37 views
1

我对Java的代码:Scala:如何在索引FOR循环中使条件加倍?

int[] array = new int[100]; 

for (int k = 0; k < array.length * 2; k++) { 
    // some action 
} 

for圈我要加倍数组的长度,并用它进行迭代。但是我怎样才能在Scala中获得同样的东西?

我试图用zipWithIndex,但不允许双重条件:

arr.zipWithIndex.foreach { 
    case (el, idx) => {...} 
} 

回答

4

遍历指数,如在原来的for循环,你可以只使用一个范围:

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

scala> (0 until array.length * 2).foreach(println(_)) 
0 
1 
2 
3 
4 
5 

为了得到可以在原始阵列(两次)或两次阵列上使用zipWithIndex索引和元件的元组,这取决于所期望的结果:

scala> (array.zipWithIndex ++ array.zipWithIndex).foreach{ 
    | case (x, i) => println(s"$i: $x") 
    | } 
0: a 
1: b 
2: c 
0: a 
1: b 
2: c 

scala> (array ++ array).zipWithIndex.foreach{ 
    | case (x, i) => println(s"$i: $x") 
    | } 
0: a 
1: b 
2: c 
3: a 
4: b 
5: c 
+0

使用'0直到N'而不是'0到N-1'。 – dhg

+0

不错!谢谢! –