Предыдущая часть – часть 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
.