March 2010 Archives

Прагма 'feature'
категория: feature

Название

feature - прагма для включения поддержки новых синтаксических возможностей

Синопсис

    use feature qw(switch say); # поддержка новых встроенных функций 
                                # switch и say
    given ($foo) {
        when (1)	  { say "\$foo == 1" }
        when ([2,3])	  { say "\$foo == 2 || \$foo == 3" }
        when (/^a[bc]d$/) { say "\$foo eq 'abd' || \$foo eq 'acd'" }
        when ($_ > 100)   { say "\$foo > 100" }
        default		  { say "Ни одно условие не сработало" }
    }

    use feature ':5.10'; # включить все новые синтаксические
                         # возможности perl 5.10

Описание

Обычно невозможно добавить новый синтаксис в Perl без нарушения правильной работы некоторых существующих программ. Данная прагма обеспечивает возможность свести этот риск к минимуму. Новые синтаксические конструкции могут быть включены конструкцией use feature 'некая_функция', и могут использоваться в её лексической области видимости.

Эффект лексической области видимости

Подобно другим прагмам (use strict к примеру), feature действует в лексической области видимости. use feature qw(функция) подключит функцию "функция" до конца текущей области видимости.

    {
        use feature 'say';
        say "say доступна здесь...";
    }
    print ".. но не здесь.\n";

no feature

    use feature 'say';
    say "Здесь можно использовать новую функцию say";
    {
        no feature 'say';
        print "Но не здесь.\n";
    }
    say "и здесь say доступна";

no feature без перечисления функций отключает их все.

Функция 'switch'

use feature 'switch' сообщает компилятору, что нужно подключить конструкцию given/when.

См. Переключатель switch

Функция 'say'

use feature 'say' сообщает компилятору, подключить функцию 'say'.

См. "say" in perlfunc.

Функция 'state'

use feature 'state' сообщает компилятору подключить поддержку функции 'state'.

Стойкие приватные переменные

Наборы функций

Можно загрузить все функции разом, используя набор функций (анг. feature bundle). В настоящее время доступен только один вариант набора функций - конструкция use feature ":5.10", которая эквивалентна use feature qw(switch say state).

Указание подверсий, например 0 в 5.10.0 не имеет никакого эффекта.

Неявная загрузка feature

Есть два пути загрузить прагму feature неявно:

  • С помощью флага -E в командной строке, вместо -e. Она неявно подключит поддержку всех новых функций.

  • По явному требованию минимальной версии Perl для вашей программы конструкцией use VERSION, когда указанная версия выше или равна 5.10.0. То есть,

        use 5.10.0;
    

    неявно подключит:

        use feature ':5.10';
    

    Но во избежание предупреждений, связанных с портативностью (анг. portability warnings) (см. "use" in perlfunc), вы пожете писать так:

        use 5.010;
    

    с тем же самым эффектом.

Categories

Statistic

About this Archive

This page is an archive of entries from March 2010 listed from newest to oldest.

May 2010 is the next archive.

Find recent content on the main index or look in the archives to find all content.