[Moscow.pm] do_once { CODE };

Илья Винокуров ilvin на mail.ru
Пт Фев 7 12:08:05 PST 2014


 Круто! Это ж замыкания в другой проекции :)


use feature "state";
sub once {
    state $cnt=1; return unless $cnt-- > 0;
    print "ONCE\n";
}
for (3..5) {
    once($_);
};
once();

Пятница,  7 февраля 2014, 23:47 +04:00 от Andrei Lukovenko <aluck на cordeo.ru>:
>http://perldoc.perl.org/functions/state.html
>
>
>7 февраля 2014 г., 23:27 пользователь Андрей Асякин  < asan999 на gmail.com > написал:
>>Если не секрет, зачем?) Подумалось про
      твигги, если он, то можно сделать как то так:
>>
>>use common::sense;
>>
>>sub init {
>>    say 42;
>>}
>>
>>sub app {
>>    init();
>>    eval q|
>>        sub app {
>>            say "[500, [], [$_[0]]]";
>>        }
>>    |;
>>    die $@ if $@;
>>
>>    &app;
>>};
>>
>>app($_) for (1..3);
>>
>>>
>>>
>>>7 февраля 2014 г., 20:19 пользователь
          Харпалёв Иван  < ivan.kharpalev на gmail.com > написал:
>>>>Доброго времени суток, могучий MoscowPM;
>>>>
>>>>Скажите, есть ли какие-то решения, чтобы кусок кода
                выполнялся ровно один раз? ( за время жизни программы)
>>>>
>>>>например
>>>>
>>>>for (...) {
>>>>       do_once { code to be executed only once };
>>>>       ....
>>>>}
>>>>do_once  { some_more() };
>>>>
>>>>Или как такое посоветуете делать?
>>>>Чтобы по caller определялось, место вызова и куда-то
                запоминалось или ещё как-то?
>>>>
>>>>С уважением
>>>>
>>>>
>>>>--
>>>>Moscow.pm mailing list
>>>>moscow-pm на pm.org |  http://moscow.pm.org
>>>>
>>>
>>>
>>>
>>
>>
>>--
>>Moscow.pm mailing list
>>moscow-pm на pm.org |  http://moscow.pm.org
>>
>
>
>
>-- 
>Best regards, Andrei
>+7-937-847-60-74 -- 
>Moscow.pm mailing list
>moscow-pm на pm.org |  http://moscow.pm.org


-- 
Илья Винокуров
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20140208/785bd8f2/attachment.html>


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