Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Помогите новичку, разбор скрипта, ч1 |
Автор: 7183847 17.8.2019, 11:19 | ||
Добрый день Помогите новичку разобрать скрипт Заранее прошу за качество оформления кода - распознал из книги. Код не большой, все понятно кроме 2х моментов: "'action' =>sub {" - в книгах я читал, что процедура описывается отдельно в коде типа sub имя {}, а потом вызывается как &имя, а тут что то не понятное, что это и как это работает? и в последней процедуре не понятен этот код: "foreach my $issue (@{ $actions($event_type}}) { &(Sissue>(action}}($event);" - не могу понять что этот код делает
|
Автор: arto 19.8.2019, 06:54 |
1. в данном случае ссылка на безымянную функцию. как раз она и вызывается в третьем вопросе. 2. @ -- онозначение спискового контекста, т.е. получение списка из $actions($event_type}, присвоение каждого элемента списка $issue. btw, не Sissue, с $issue. |
Автор: 7183847 20.8.2019, 07:42 | ||
Добрый день, про описание безымянной функции впринципе понятно, получается что она как бы выступает значением хеша actions ? По второму пункту все равно не ясно ) Где именно там происходит вызов этой безымянной функции? И что находится в @? Параметры функции process_event? Зачем тогда при ее описании указано в скобках ($)? |
Автор: arto 20.8.2019, 08:28 | ||
1. да. значение элемента хеша -- ссылка на функцию. 2. &($issue>(action}}($event); -- вызывается незымянная функция с аргументом $event. можно записать проще -- $issue->{'actioin'}->($event). perldoc perlref 3. в $actions($event_type} находится ссылка на список. выражение @{ $actions($event_type} } разименовывает ссылку и возвращает сам список:
|