如何在Groovy中对数组进行迭代?

jai*_*jai 10 arrays iteration grails groovy

public class ArrayTest{
  public static void main(String[] args){
    String[] list = {"key1", "key2", "key3"};
    String[] list2 = {"val1", "val2", "val3"};

    for(int i = 0; i < list.length; i++){
      ilike(list[i], list2[i];        
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在Groovy中编写上面的代码?

实际上,它是一个grails应用程序,我想在上面做类似的事情.

tim*_*tes 22

你有两个选择想到...

鉴于:

String[] list  = [ 'key1', 'key2', 'key3' ]
String[] list2 = [ 'val1', 'val2', 'val3' ]
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

list.eachWithIndex { a, i ->
  ilike a, list2[ i ]
}
Run Code Online (Sandbox Code Playgroud)

或假设ilike定义为:

void ilike( String a, String b ) {
  println "I like $a and $b"
}
Run Code Online (Sandbox Code Playgroud)

然后你可以做(​​使用transpose):

[list,list2].transpose().each {
  ilike it
}
Run Code Online (Sandbox Code Playgroud)

  • 我刚才发布了一篇关于这里发生的事情的帖子,详细介绍了JVM字节码中发生的事情:http://naleid.com/blog/2008/12/24/groovy-spread-operator-optional-换属性加一个-PEEK-到最香肠工厂/ (2认同)