Мир до state

| Комментариев: 3

До прихода в Perl оператора state, который позволяет создавать «статические» переменные прямо внутри подпрограмм, люди пользовались вот таким приемом:

{
    my $count = 0;

    sub next_value {
        return ++$count;
    }

}

print next_value, "\n";
print next_value, "\n";


Теперь все ребята пишут так:

use v5.10;

sub next_value {
    state $count = 0;

    return ++$count;
}

say next_value;
say next_value;

Комментариев: 3

До state было: my $x if 0;

sub x {
my $x if 0;
print ++$x, "\n";
}

x() for (1..5);

Современный perl на это выдаёт Deprecated use of my() in false conditional at 1.pl line 7

По-моему, более православно определять классическим способом, за пределами sub { }. А иначе это похоже на использование переменных без предварительного объявления.

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 02.09.2010 23:34. Автор — ash.

Предыдущая запись — Пара слов про May Perl

Следующая запись — State of the week

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.