my $label = eval { $func->() };
in_our_scope($label) && goto $label || die $label;
НО ЗАЧЕМ !!!?
Общественность просит кейс в студию.
Общественность просит кейс в студию.
----------------
Кому: Moscow.pm group ([email protected]);
Копия: Alessandro Gorohovski ([email protected]);
Тема: [Moscow.pm] return по метке;
18.12.2024, 15:24, "Alessandro Gorohovski via Moscow-pm" <[email protected]>:
Всем кто откликнулся, премного благодарен!Согласен, что основная проблема здесь -- правильно выровнять (почистить) стек,а с этим лучше всего справится evel,--ср, 18 дек. 2024 г. в 12:34, Denis Evdokimov via Moscow-pm <[email protected]>:--На самом деле у тебя 2 задачи:
Для 1) подойдёт:
1) вернуться в определенное место кода и почистит стек
2) передать данныеlast МЕТКАeval+diegoto МЕТКАДля 2) подойдёт:eval+dieПередавать какую-то ссылку через все функции, чтобы положить туда результат, к примеру $self.Положить в какую-то глобальную переменнуюср, 18 дек. 2024 г., 12:18 Иван Бессарабов via Moscow-pm <[email protected]>:goto — сделает ровно то что хочется.
Все зависит от задачи, но вообще, обычно, считается что goto — это плохо. Так что может быть, нужно как-то пересмотреть условие задачи и переделать код так чтобы не было необходимости в использовании goto.
Пример с goto: https://PerlBanjo.com/95d448df64
--On Wed, Dec 18, 2024 at 8:03 AM Alessandro Gorohovski via Moscow-pm <[email protected]> wrote:--Уважаемое сообщество, приветствую!
Подскажите, может кто-нибудь знает,способ глобально выйти (сделать return) из вложенных подпрограмм (функций) по метке,т.е. аналогично last для управления циклом?Например:_Metka:&aaa( @args );$@ && say $@;exit;#--------------------sub aaa {# ...&bbb;# ...}#--------------------sub bbb {# ...&ccc;# ...}#--------------------sub ccc {# ...&ccc;# ...$@ = $results;return _Metka;}
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
