Groovy: часть 7 – операторы ветвления if/else/switch

 

Предыдущая часть – часть 6 – циклы.

В Groovy имеются операторы ветвления (или условные операторы), позволяющие менять ход выполнения программы.

Оператор if

Самый используемый оператор – if.

Его синтаксис выглядит следующим образом:

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

Оператор if проверяет условие (condition), и если оно True – выполняется выражение в блоке:

Пример использования оператора if:

#!/usr/bin/env groovy

class Example { 
   static void main(String[] args) { 
      // Initializing a local variable 
      int a = 2 
        
      //Check for the boolean condition 
      if (a<100) { 
         //If the condition is true print the following statement 
         println("The value is less than 100"); 
      } 
   } 
}

В этом примере мы объявляем переменную a и присваем ей значение 2, после чего в блоке if проверяется условие и результат выводится на экран с помощью println:

$ ./example.groovy 
The value is less than 100

Оператор if/else

Его синтаксис выглядит так:

f(condition) { 
   statement #1 
   statement #2 
   ... 
} else{ 
   statement #3 
   statement #4  
}

Сначала проверяется условие в if. Если оно True – выполняются выражения до блока else. Если условие False – выполняются выражения из блока else, и цикл проверки завершается:

Пример кода с использованием if/else:

#!/usr/bin/env groovy

class Example { 
   static void main(String[] args) { 
      // Initializing a local variable 
      int a = 2
        
      //Check for the boolean condition 
      if (a<100) { 
         //If the condition is true print the following statement 
         println("The value is less than 100"); 
      } else { 
         //If the condition is false print the following statement 
         println("The value is greater than 100"); 
      } 
   } 
}

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

$ ./example.groovy 
The value is less than 100

Кроме того – вы можете использовать вложенные блоки if/else, например:

#!/usr/bin/env groovy

class Example { 
   static void main(String[] args) { 
      // Initializing a local variable 
      int a = 12 
        
      //Check for the boolean condition 
      if (a>100) {
         //If the condition is true print the following statement 
         println("The value is less than 100"); 
      } else 
         // Check if the value of a is greater than 5 
            
      if (a>5) { 
         //If the condition is true print the following statement 
         println("The value is greater than 5 and greater than 100"); 
      } else { 
         //If the condition is false print the following statement 
         println("The value of a is less than 5"); 
      }  
   } 
}

Результат:

$ ./example.groovy 
The value is greater than 5 and greater than 100

Оператор switch

Кроме if/else – вы можете использовать конструкцию switch, которая вылядит следующим образом:

switch(expression) { 
   case expression #1: 
   statement #1 
   ... 
   case expression #2: 
   statement #2 
   ... 
   case expression #N: 
   statement #N 
   ... 
   default:
   statement #Default 
   ... 
}

Тут – проверяется выражение, переданное оператору switch, после чего – с помощью оператора case выполняется проверка его значения, и выполняются выражения из этого блока.

Так же – тут можно использовать оператор break, что бы прервать выполнение цикла, как только будет найдено соответствие между case и значением из switch. Вы можете использовать инструкцию default, что бы определить действие по умолчанию, если ни один из вариантов не сработал.

Вот так выглядит диаграмма работы switch:

И пример кода:

#!/usr/bin/env groovy

class Example { 
   static void main(String[] args) { 
      //initializing a local variable 
      int a = 2
        
      //Evaluating the expression value 
      switch(a) {            
         //There is case statement defined for 4 cases 
         // Each case statement section has a break condition to exit the loop 
            
         case 1: 
            println("The value of a is One"); 
            break; 
         case 2: 
            println("The value of a is Two"); 
            break; 
         case 3: 
            println("The value of a is Three"); 
            break; 
         case 4: 
            println("The value of a is Four"); 
            break; 
         default: 
            println("The value is unknown"); 
            break; 
      }
   }
}

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

$ ./example.groovy 
The value of a is Two

Как и в случае с оператором if – вы можете использовать вложенные конструкции для switch, например:

#!/usr/bin/env groovy

class Example { 
   static void main(String[] args) { 
      //Initializing 2 variables i and j 
      int i = 0; 
      int j = 1; 
        
      // First evaluating the value of variable i 
      switch(i) { 
         case 0: 
            // Next evaluating the value of variable j 
            switch(j) { 
               case 0: 
                  println("i is 0, j is 0"); 
                  break; 
               case 1: 
                  println("i is 0, j is 1"); 
                  break; 
               
               // The default condition for the inner switch statement 
               default: 
               println("nested default case!!"); 
            } 
         break; 
            
         // The default condition for the outer switch statement 
         default: 
            println("No matching case found!!"); 
      }
   }
}

Результат:

$ ./example.groovy 
i is 0, j is 1

Продолжение.