Предыдущая часть — часть 5 – операторы.
Содержание
Циклы в Groovy
До сих пор мы рассматривали операторы, которые выполняются один за другим, по очереди.
Кроме них — в Groovy представлены операторы циклов — while
, for
и for-in
:
while
— операторwhil
e выполняет проверку заданного условия, и выполняет код в цикле, если условие True.for
— операторfor
используется для итерации по набору значений.for-in
— аналогично, см. ниже.
Так же имеются операторы для управления выполнением цикла:
break
— используется для изменения выполнения циклов и оператораswitch
.continue
— дополняетbreak
, но ограничен операторамиwhile
иfor
.
Оператор while
Синтаксис:
while(condition) { statement #1 statement #2 ... }
Оператор while
выполняет проверку заданного условия. Если результат True — выполняются операторы в теле цикла, после чего выполнение начинается заново — с проверки условия цикла, пока оно не вернёт False. В таком случае — выполнение цикла будет прервано, и выполнение программы будет передано следующему за циклому коду:
Пример 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 — включает в себя операции по изменению значения объявленной переменной.
Пример:
#!/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
выполняет три операции:
- объявляется переменная
i
со значением == 0; - указывается условное выражение, которое будет выполняться циклом, пока знаечние
i
меньше 5; - при каждой итерации значение
i
увеличивается на единицу.
Оператор for-in
Синтаксис:
for(variable in range) { statement #1 statement #2 … }
Пример:
#/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
.
Пример:
#!/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
— игнорируются.
Пример:
#!/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
.