РАЗДЕЛ
    about_Switch

КРАТКОЕ ОПИСАНИЕ
    Описание использования инструкции Switch для обработки нескольких 
    инструкций If.

ПОЛНОЕ ОПИСАНИЕ
    Инструкция If используется для принятия решения в скрипте или 
    программе. В сущности, она сообщает: "Если данное условие 
    выполняется, то выполните это действие. В противном случае 
    выполните следующее действие". Эту операцию можно выполнять 
    сколько угодно раз, однако если список условий велик, 
    использование инструкции If становится неудобным. Можно 
    объединить длинный список условий в одной инструкции switch. Как 
    и во всех инструкциях с ветвлением, блоки скриптов должны 
    заключаться в скобки ({}).

    Инструкция Switch фактически представляет собой последовательность
    инструкций If. Она поочередно сопоставляет выражение с каждым 
    условием. Если обнаружено совпадение, то выполняется действие, 
    связанное с этим условием. Обычно инструкция switch выглядит 
    следующим образом:

        PS> $a = 3
        PS> switch ($a) {
            1 {"Один."}
            2 {"Два."}
            3 {"Три."}
            4 {"Четыре."}
            }
        
        Три.


    В этом простом примере значение сравнивается с каждым условием в 
    списке. Это действие выводит строку совпадения. Однако при 
    проверке всех условий может возникнуть проблема. Пример:

        PS> $day = "day5"
        PS> switch ($day){
            day1 {"Понедельник"; break}
            day2 {"Вторник"; break}
            day3 {"Среда"; break}
            day4 {"Четверг"; break}
            day5 {"Пятница"; break}
            day6 {"Суббота"; break}
            day7 {"Воскресенье"; break}
            day5 {"Слишком много дней"; break}
            }
        
        Пятница


    В списке присутствует два условия day5. Однако инструкция break в 
    конце каждого условия велит инструкции switch прекратить 
    дальнейший поиск и выполнить найденное действие. Если бы 
    инструкции break не было, были бы выполнены оба действия day5. 

    Если инструкция switch применяется к массиву, проверяться будут 
    все элементы массива по порядку, начиная с нулевого элемента (0). 
    В массиве должен быть хотя бы один элемент, удовлетворяющий хотя 
    бы одному условию. В противном случае произойдет ошибка. Если 
    предложений по умолчанию несколько, результатом будет ошибка.

    Полный синтаксис switch следующий:

        switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline ) 
    или

        switch [-regex|-wildcard|-exact][-casesensitive] -file filename

    с последующим

        { 
            "string"|number|variable|{ expression } { statementlist } 
            default { statementlist } 
        }

    
    Если не использовать никакие параметры, оператор Switch выполняет 
    действие, как если бы было обнаружено точное совпадение без учета 
    регистра. Если результатом конвейера является массив, проверяться 
    будут все элементы массива в восходящем порядке, начиная с 
    нулевого элемента (0).  

    В блоке кода Switch могут присутствовать только один условный 
    элемент и только одно предложение по умолчанию. При наличии нескольких 
    предложений по умолчанию возникает исключение ParseException.

    Инструкция Switch имеет следующие параметры.

        Regex	        Указывает, что удовлетворяющее критерию 
                        предложение, являющееся строкой, обрабатывается как строка Regex. 
                        Использование этого параметра отключает параметры Wildcard и Exact. 
                        Если удовлетворяющее критерию предложение не является строкой, 
                        этот параметр игнорируется.

        Wildcard	Указывает, что удовлетворяющее критерию предложение, 
                        являющееся строкой, обрабатывается как строка с 
                        подстановочным символом. Использование этого параметра 
                        отключает параметры Regex и Exact. Если удовлетворяющее критерию 
                        предложение не является строкой, этот параметр игнорируется.

        Exact	        Указывает, что удовлетворяющее критерию 
                        предложение, являющееся строкой, должно точно соответствовать критерию. 
                        Использование этого параметра отключает параметры Wildcard и Regex. Если 
                        удовлетворяющее критерию предложение не является строкой, этот параметр 
                        игнорируется.

        CaseSensitive	Указывает, что удовлетворяющее критерию предложение, 
                        являющееся строкой, изменяется с учетом регистра. Если удовлетворяющее
                        критерию предложение не является строкой, этот параметр игнорируется.

        File	        Источник берется из файла (или представителя), а не из инструкции. 
                        При наличии нескольких параметров File используется только 
                        последний. Каждая строка файла считывается и передается через
                        блок switch.

    Допускается многократное использование параметров Regex, Wildcard 
    или Exact. Однако на действие влияет только последний 
    использованный параметр.

    Ключевое слово Break означает, что обработка больше не выполняется и 
    инструкция Switch завершает работу. 

    Ключевое слово Continue указывает, что обработка текущего токена 
    не будет продолжаться и начнется оценка следующего токена в 
    условии. При отсутствии токенов оператор Switch завершает работу.

    Блок вида "{ expression }" может быть блоком кода, который будет 
    оцениваться при сравнении. Текущий объект привязывается к 
    автоматической переменной $_ и доступен во время проверки выражения. 
    Считается, что результатом сравнения было совпадение, если выражение 
    принимает значение "true". Это выражение вычисляется в новой области.

    Ключевое слово Default в инструкции switch указывает, что если 
    соответствия не найдены, начнется проверка кодового блока, 
    следующего за ключевым словом. Программному потоку будет запрещено 
    переключение с блока на блок, поскольку закрывающая скобка ( } ) в 
    составном списке является явным остановом. 

    При обнаружении нескольких соответствий каждое соответствие 
    приводит к запуску выражения. Во избежание этого для предотвращения 
    дальнейшего сравнения можно использовать ключевые слова Break или 
    Continue.


СМ. ТАКЖЕ
    about_Break
    about_Continue
    about_If
    about_Script_Blocks




Содержание