Groovy: часть 6 – циклы

groovy-logoПредыдущая часть – часть 5 – операторы.

Циклы в Groovy

До сих пор мы рассматривали операторы, которые выполняются один за другим, по очереди.

Кроме них – в Groovy представлены операторы циклов – while, for и for-in:

  • while – оператор while выполняет проверку заданного условия, и выполняет код в цикле, если условие True.
  • for – оператор for используется для итерации по набору значений.
  • for-in – аналогично, см. ниже.

Так же имеются операторы для управления выполнением цикла:

  • break – используется для изменения выполнения циклов и оператора switch.
  • continue – дополняет break, но ограничен операторами while и for.

Оператор while

Синтаксис:

while(condition) { 
   statement #1 
   statement #2 
   ... 
}

Оператор while выполняет проверку заданного условия. Если результат True – выполняются операторы в теле цикла, после чего выполнение начинается заново – с проверки условия цикла, пока оно не вернёт False. В таком случае – выполнение цикла будет прервано, и выполнение программы будет передано следующему за циклому коду:

while_loop

Пример while:

#!/usr/bin/env groovy

class Example {
   static void main(String[] args) {
      int count = 0;
        
      while(count<5) {
         println(count);
         count++;
      }
   }
}

Результат его выполнения:

$ ./example.groovy 
0
1
2
3
4

Оператор for

Оператор for предназначен для выполнения цикла с набором данных.

Синтаксис:

for(variable declaration;expression;increment) { 
   statement #1 
   statement #2 
   … 
}

Цикл for состоит из трёх основных частей:

  • variable declaration – объявление переменной, используется только раз для объявления переменной, которая будет использоваться в цикле.
  • expression – выражение, которое будет выполнено при каждой итерации цикла.
  • increment – включает в себя операции по изменению значения объявленной переменной.

for_loop

Пример:

#!/usr/bin/env groovy

class Example { 
   static void main(String[] args) {
    
      for(int i = 0;i<5;i++) {
         println(i);
      }
        
   }
}

Резултат:

$ ./example.groovy 
0
1
2
3
4

В этом примере цикл for выполняет три операции:

  1. объявляется переменная i со значением == 0;
  2. указывается условное выражение, которое будет выполняться циклом, пока знаечние i меньше 5;
  3. при каждой итерации значение i увеличивается на единицу.

Оператор for-in

Синтаксис:

for(variable in range) { 
   statement #1 
   statement #2 
   … 
}

for_in_loop

Пример:

#/usr/bin/env groovy

class Example { 
   static void main(String[] args) { 
      int[] array = [0,1,2,3]; 
		
      for(int i in array) { 
         println(i); 
      } 
   } 
}

В этом примере – сначала инициализируется массив array с 4-мя цифрами, после чего он передаётся циклу for, в котором инициализируется переменная i, через которую происходит итерация значений из массива array, и результат выводится на экран.

Кроме того – for-in можно использовать с диапазонами, например:

#!/usr/bin/env groovy

class Example {
   static void main(String[] args) {

      for(int i in 1..5) {
         println(i);
      }

   }
}

Результат:

$ ./example.groovy 
1
2
3
4
5

И для работы с ассоциированными массивами (map в Groovy), например:

#!/usr/bin/env groovy

class Example {
   static void main(String[] args) {
      def employee = ["Ken" : 21, "John" : 25, "Sally" : 22];
        
      for(emp in employee) {
         println(emp);
      }
   }
}

Результат:

$ ./example.groovy 
Ken=21
John=25
Sally=22

Оператор break

Оператор break используется для изменения выполнения циклов и оператора switch.

break_statement

Пример:

#!/usr/bin/env groovy

class Example {
   static void main(String[] args) {
      int[] array = [0,1,2,3];
        
      for(int i in array) {
         println(i);
         if(i == 2)
         break;
      }
   } 
}

Результат:

$ ./example.groovy 
0
1
2

Так как в цикле есть условие, по которому выполянется break в случае, если i == 2 – то последнее значение массива, 3, не выводится – цикл прерывается break.

Оператор continue

Оператор continue дополняет break, но его область применения ограничена операторами while и for.

При выполнении continue – управление передаётся к условию проверки в начале цикла, что бы определить – должен ли цикл продолжать своё выполнение, а все операторы в цикле, находящиеся после continue – игнорируются.

continue_statement

Пример:

#!/usr/bin/env groovy

class Example {
   static void main(String[] args) {
      int[] array = [0,1,2,3];
        
      for(int i in array) {
         println(i);
         if(i == 2)
         continue;
      }
   }
}

Результат:

$ ./example.groovy 
0
1
2
3

Продолжение – часть 7 – операторы ветвления if/else/switch.