Оператор выбора given/when/default


28.10.2003, 22:08Иногда Perl ругали за то, что в нем отсутствует оператор выбора, подобный тому, который доступен, например, в C (switch/case/default). Один из способов решения задачи ветвления кода — применение каскада нанизанных операторов if/elsif.

В Perl 6 появился оператор given. Ему нужно передать переменную, на основании значения которой будет сделан выбор. Тело, заключенное в фигурные скобки, должно содержать несколько операторов when и один (если необходимо) — default. Синтаксически when и default одинаковы: после ключевого слова следует что-то, с чем будет сопоставлена переменная выбора, а далее — блок кода. Семантически when и default похожи на case и default в C++.

Простейший пример использования given/when/default показан в этом коде:

my $choice = 'x';

given $choice {
   when 'x' {print "X ($_)";}
   when 'y' {print "Y ($_)";}
   default {print "defaut ($_)";}
}

Во время перебора попыток переменная $_ принимает значение, переданное в переменной $choice. Это легко видеть по результатам работы программы: в каждом блоке кода печатается значение этой переменной.

По идее, после ключевых слов when и default допустимо записывать не только строковый литерал, но и, например, регулярное выражение, с которым будет сопоставляться переменная выбора. Однако, на сегодняшний день мне это не удалось. Надеюсь на лучшее.



14 | 15 | 16 | 17 | 18 | 19 | 20