Arrays 如何在Groovy中迭代数组? 公共类数组测试{ 公共静态void main(字符串[]args){ String[]list={“key1”、“key2”、“key3”}; 字符串[]list2={“val1”、“val2”、“val3”}; for(int i=0;i

Arrays 如何在Groovy中迭代数组? 公共类数组测试{ 公共静态void main(字符串[]args){ String[]list={“key1”、“key2”、“key3”}; 字符串[]list2={“val1”、“val2”、“val3”}; for(int i=0;i,arrays,grails,groovy,iteration,Arrays,Grails,Groovy,Iteration,如何在Groovy中编写上述代码 实际上,这是一个grails应用程序,我想在上面做类似的事情。您会想到几个选项 鉴于: public class ArrayTest{ public static void main(String[] args){ String[] list = {"key1", "key2", "key3"}; String[] list2 = {"val1", "val2", "val3"}; for(int i = 0; i < lis

如何在Groovy中编写上述代码


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

您会想到几个选项

鉴于:

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];        
    }
  }
}
然后你可以做:

String[] list  = [ 'key1', 'key2', 'key3' ]
String[] list2 = [ 'val1', 'val2', 'val3' ]
或者假设ilike的定义为:

list.eachWithIndex { a, i ->
  ilike a, list2[ i ]
}
然后您可以(使用):


我不确定ILIKE将做什么,但是从你最初的java代码的执行中,我觉得你可以考虑使用哈希映射,你的程序看起来就像下面的

[list,list2].transpose().each {
  ilike it
}

以下可能是一个很好的参考点youhttp://groovy.codehaus.org/JN1035-Maps

+1
每个withindex
都是我的首选。
转置
太“聪明”了一半,没有人喜欢炫耀tim@Don哈哈哈…我确实对呼叫
微笑了,不过我喜欢它;-)我喜欢转置版本。很棒的东西。我不久前在这里发布了一篇文章,详细介绍了JVM字节码中发生的事情:为了更清楚,使用javap在字节码中看到的内容最终会让您看到:MetaClassImpl.invokeMethod(对象对象、字符串方法名、对象参数),然后调用invokeMethod(Object-Object,String-methodName,Object[]originalaarguments),因此如果有一个方法匹配扩展参数,它将自动从列表中扩展参数。
[list,list2].transpose().each {
  ilike it
}
def map= ['key1':'val1', 'key2':'val2', 'key2':val2, "key3":'val3']
map.eachWithIndex{ it, i-> //eachIndex() always takes 2 params
  ilikeit it.key, it.value // and you have i if you need it in your program
}