|
Модераторы: korob2001, ginnie |
|
7183847 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.8.2019 Репутация: нет Всего: нет |
Добрый день
Помогите новичку разобрать скрипт Заранее прошу за качество оформления кода - распознал из книги. Код не большой, все понятно кроме 2х моментов: "'action' =>sub {" - в книгах я читал, что процедура описывается отдельно в коде типа sub имя {}, а потом вызывается как &имя, а тут что то не понятное, что это и как это работает? и в последней процедуре не понятен этот код: "foreach my $issue (@{ $actions($event_type}}) { &(Sissue>(action}}($event);" - не могу понять что этот код делает
|
|||
|
||||
arto |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
1. в данном случае ссылка на безымянную функцию. как раз она и вызывается в третьем вопросе.
2. @ -- онозначение спискового контекста, т.е. получение списка из $actions($event_type}, присвоение каждого элемента списка $issue. btw, не Sissue, с $issue. |
|||
|
||||
7183847 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.8.2019 Репутация: нет Всего: нет |
Добрый день, про описание безымянной функции впринципе понятно, получается что она как бы выступает значением хеша actions ? По второму пункту все равно не ясно ) Где именно там происходит вызов этой безымянной функции? И что находится в @? Параметры функции process_event? Зачем тогда при ее описании указано в скобках ($)? |
|||
|
||||
arto |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
1. да. значение элемента хеша -- ссылка на функцию.
2. &($issue>(action}}($event); -- вызывается незымянная функция с аргументом $event. можно записать проще -- $issue->{'actioin'}->($event). perldoc perlref 3. в $actions($event_type} находится ссылка на список. выражение @{ $actions($event_type} } разименовывает ссылку и возвращает сам список:
|
|||
|
||||
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |