Почему Модуль коммутатора удерживается от использования в Perl?

Почему Модуль коммутатора удерживался от использования в Perl 5.12?

Я знаю это a switch/case будьте сделаны с elsif, но мне не нравится так очень.

18
задан brian d foy 1 July 2017 в 18:58
поделиться

2 ответа

Perl 5.10 представил реальный переключатель, называемый given-when

Старый Switch использовал исходный код фильтрация и другие ограничения .

24
ответ дан 30 November 2019 в 06:59
поделиться

Исходный коммутатор использует фильтр источника для выполнения своей работы, и это часто плохая идея. По сути, он предварительно обрабатывает ваш буквальный источник для создания нового кода, прежде чем perl его скомпилирует. Модуль никогда не предназначался для интенсивного использования, и это было скорее доказательством концепции, чтобы выяснить, как может выглядеть настоящая функция Perl.

Perl 5.10 добавил конструкцию given-when , чтобы делать то, что большинство людей хотят от switch-case , но она делает немного больше. Изучение Perl, 5-е издание посвящает ему целую главу вместе с умным сопоставлением. Однако в 7-м издании Learning Perl мы удалили эту главу, поскольку интеллектуальное сопоставление является экспериментальным, начиная с версии 5.18.

Вы не можете создать Perl given-when с конструкциями if-elsif-else . given-when позволяет выполнять несколько блоков, а также добавлять межстраничный код. С помощью if-elsif-else вы выполняете ровно одну ветвь.

17
ответ дан 30 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: