[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