Как перебрать массив в Groovy? - PullRequest
9 голосов
/ 01 июня 2011
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];        
    }
  }
}

Как написать приведенный выше код в Groovy?

На самом деле, это приложение Grails, где я хочу сделать подобное выше.

Ответы [ 2 ]

21 голосов
/ 01 июня 2011

У вас есть несколько вариантов, которые приходят на ум ...

Дано:

String[] list  = [ 'key1', 'key2', 'key3' ]
String[] list2 = [ 'val1', 'val2', 'val3' ]

Тогда вы можете сделать:

list.eachWithIndex { a, i ->
  ilike a, list2[ i ]
}

или предположить, что илиопределяется как:

void ilike( String a, String b ) {
  println "I like $a and $b"
}

Тогда вы можете сделать (используя transpose):

[list,list2].transpose().each {
  ilike it
}
0 голосов
/ 01 июня 2011

Я не уверен, что iLike будет делать, но из-за реализации вашего исходного Java-кода я чувствую, что вы могли бы подумать об использовании карты хеша, и ваша программа будет выглядеть следующим образом

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
}

Следующее может бытьхороший ориентир для вас http://groovy.codehaus.org/JN1035-Maps

...