[Moscow.pm] Switch vs. ~~ (Was: Re: Забавные слайдики по perl 5.10)

Andrew Shitov andy на shitov.ru
Пн Ноя 19 20:32:01 PST 2007


> Кстати, кто-то понял идею Smart Matching (слайд 67)? Разве это не то
> же самое, что в остальных языках называется case?

Не тоже самое.

> switch - да - он в си даже swtch называется.
> А вот смартматчинг это нечто более понтовое.

Одно и тоже. Не путайте людей :-)

Смарт-матчинг (~~) - именно та операция, которая выполняется внутри
веток when блока given. Инструкция given лишь устанавливает переменную $_,
которая участвует в сопоставлениях в каждом when.

Код
    given $x {
        when /\d/ {...}
    }

означает именно упомянутый смарт-матчинг:
    given $x {
        when $_ ~~ /\d/ {...}
    }


Мало того, в 5.10 отдельностоящий when работает как if (и сообщает об
ошибке при этом :-)


--
Андрей Шитов
______________________________________________________________________
andy на shitov.ru | http://www.shitov.ru



Подробная информация о списке рассылки Moscow-pm