Круто! Это ж замыкания в другой проекции :)
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 <[email protected]>:
>http://perldoc.perl.org/functions/state.html
>
>
>7 февраля 2014 г., 23:27 пользователь Андрей Асякин < [email protected] >
>написал:
>>Если не секрет, зачем?) Подумалось про
твигги, если он, то можно сделать как то так:
>>
>>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 пользователь
Харпалёв Иван < [email protected] > написал:
>>>>Доброго времени суток, могучий MoscowPM;
>>>>
>>>>Скажите, есть ли какие-то решения, чтобы кусок кода
выполнялся ровно один раз? ( за время жизни программы)
>>>>
>>>>например
>>>>
>>>>for (...) {
>>>> do_once { code to be executed only once };
>>>> ....
>>>>}
>>>>do_once { some_more() };
>>>>
>>>>Или как такое посоветуете делать?
>>>>Чтобы по caller определялось, место вызова и куда-то
запоминалось или ещё как-то?
>>>>
>>>>С уважением
>>>>
>>>>
>>>>--
>>>>Moscow.pm mailing list
>>>>[email protected] | http://moscow.pm.org
>>>>
>>>
>>>
>>>
>>
>>
>>--
>>Moscow.pm mailing list
>>[email protected] | http://moscow.pm.org
>>
>
>
>
>--
>Best regards, Andrei
>+7-937-847-60-74 --
>Moscow.pm mailing list
>[email protected] | http://moscow.pm.org
--
Илья Винокуров
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org