Size: a a a

2021 May 22

VO

Vyacheslav Olkhovche... in Modern::Perl
под замыканием я понимаю что-нибудь анонимно-динаимческое в том смысле что я внутрь хочу напихать всяческих ссылок на логеры и прочее кторые не будут присуствовать в праметрах вызова. надеюсь понятно завернул
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
да нет еще кода.
источник

W

Warstone in Modern::Perl
my $logger = Logger->new;
external_sub( sub {
 $logger->log("qwe");
});

Отработает так как вы ожидаете.
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
у меня есть функция wait, которая параметрам может принять другую функцию
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
ага
источник

V

Vital in Modern::Perl
пример замыкания на Perl
источник

V

Vital in Modern::Perl
# возвращает анонимную функцию
sub adder($) {
 my $x = shift();  # в котором x - свободная переменная,
 return sub ($) {
   my $y = shift();  # а y - связанная переменная
   return $x + $y;
 };
}

$add1 = adder(1);  # делаем процедуру для прибавления 1
print $add1->(10);  # печатает 11

$sub1 = adder(-1);  # делаем процедуру для вычитания 1
print $sub1->(10);  # печатает 9
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
да, что-то такое и и хочу
источник

V

Vital in Modern::Perl
взято из wiki
источник

W

Warstone in Modern::Perl
Только в привере выше - не используйте прототипы. Это забавный метод выстрелить себе в ногу
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
my $logger = Logger->new;
external_sub( sub {
 $logger->log($_[0]);
});
только скорее мне такое надо
источник

W

Warstone in Modern::Perl
Только учтите, что если кто-то хранит ссылку на анонимную сабу, то logger не умрет пока ссылка не умрет
источник

W

Warstone in Modern::Perl
Потому что есть любители:
sub int {
 my ($self) = @_;
 $self->on_smth( sub {
   $self->annotate_smth(@_);
 });
}

Такая конструкция утечет.
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
туплю. что тут является основной причиной? то что $self есть и внутри сабы и используется для вызова сабы?
источник

W

Warstone in Modern::Perl
У вас $self замыкается в сабе, а ссылка на сабу кладется в $self. Кольцо.
источник

VG

Vadim Goncharov in Modern::Perl
есть же man perlsub и man perlref
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
я уже не способен сегодня воспринимать что-то умное
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
а state внутри этих сабов вполне безеопасно использовать?
источник

W

Warstone in Modern::Perl
Если не будет кольца - вполне.
источник

ВР

Василий Степанович Р... in Modern::Perl
> - в qr/{,n}/ нижнюю границу
> можно не указывать

А какая нижняя граница будет по умолчанию - 0 или 1?
А то на опеннете в обсуждении этой новости спросил, а там в ответ только шутники отшутились, а ответа я так и не знаю.
источник