2013-05-28 2 views
0

Как я могу удвоить цикл, используя каждый, если у меня есть структура вроде этого:Двойной контур в Groovy

Termin 1 
[ [ 1][2 ][3 ] ] 
Termin 2 
[ [1 ] [2 ] [3] ] 

Termin.each(){ 
      println("first"); 
      it.each(){ 
       println("second"); // 1 2 3 
      } 
     } 

ответ

3

it используется, когда вы не определяете имя атрибута. Вы можете просто изменить имя:

def nested = [[1],[2],[3]] 

nested.each { n -> 
    n.each { s -> 
    print "Nested: $s \n" 
    } 
} 

UPDATE
it подразумевается в обернутой закрытия, так что если вы свободно с помощью Groovy семантики, вы можете также использовать

def nested = [[1],[2],[3]] 

nested.each { 
    // `it` is meant for the nested.each{} 
    it.each { 
    // `it` is meant for the it.each{} 
    print "Nested: $it \n" 
    } 
} 

Оба подход дает тот же результат.

+0

Вам не нужен мой дорогой друг. 'it' подразумевается для завернутого закрытия. – dmahapatro

+3

@dmahapatro да, но изменение имени сделает ваш код более удобочитаемым. –

+0

+1 Согласен. Это для выродков, как вы. ;). В любом случае, я обновил ваш ответ, вы можете принять его, если это приемлемо. :) – dmahapatro

Смежные вопросы