[Moscow.pm] function ref

Nikolay Mishin mi на ya.ru
Чт Дек 29 03:22:30 PST 2011


Нет, настроение у меня хорошее, всех с наступающим!

29.12.2011, 15:17, "oleg alexeenkov" <proler на gmail.com>:
> Nikolay Mishin <mi на ya.ru> писал(а) в своём письме Thu, 29 Dec 2011
> 15:07:45 +0400:
>
>>  То есть создавать ссылки на функции - плохая идея
>>  (у меня так и не заработала передача параметров)
>>  ну в общем понятно,
>>  объектов с пакетами должно быть достаточно
>>  для всяких хитростей и усложнения кода
>>
>>  жаль!
>
> Спасибо за настроение.
>
>>  29.12.2011, 15:37, "Dmitry Karpich" <meettya на gmail.com>:
>>>  Исчо раз.
>>>
>>>  sub create_index ($$){
>>>     my ($fh, $idx_file)=@_;
>>>     print "create index func\n";
>>>     }
>>>
>>>  my $fh = 10;
>>>  my $idx_file = 20;
>>>
>>>  say ' - work, but looks strange';
>>>  my $index_func_name=\&create_index; # JUST &create_index, NOT
>>>  &create_index() !!!!!
>>>  $index_func_name->( $fh, $idx_file);
>>>
>>>  say ' - much better';
>>>  create_index $fh, $idx_file; # just func, don`t do that on class method
>>>
>>>  не усложняйте себе жизнь, а? :)
>>>
>>>  Митяй.
>>>
>>>  On Dec 29, 2011, at 1:16 PM, Nikolay Mishin wrote:
>>>>   Митяй, спасибо;)) книжку уже перечитываю 3-й раз,
>>>>   особенно после Рефакторинга Фаулера, у них идее пересекаются
>>>>
>>>>   $$index_func_name->( $fh, $idx_file );
>>>>   здесь у меня лишний доллар
>>>>   работает и так
>>>>   $index_func_name->( $fh, $idx_file );
>>>>   но все-таки так прозрачно, как
>>>>   &$index_func_name->( $fh, $idx_file ); !!
>>>>
>>>>   хотя так тоже работае, ок,
>>>>   тогда ответ
>>>>   &$index_func_name->( $fh, $idx_file ); !!
>>>>
>>>>   ясно видно, что вызывается функция
>>>>
>>>>   29.12.2011, 15:03, "Dmitry Karpich" <meettya на gmail.com>:
>>>>>   Потому что
>>>>>
>>>>>   my $ref_sub1=sub {print 'By '. $_[0] };
>>>>>   sub temop_sub{ print 'Hi '. $_[0] };
>>>>>   my $ref_sub=\&temop_sub; # !!!!! ссылка на sub а не ссылка на ее
>>>>>  результат
>>>>>
>>>>>   $ref_sub->(); # так - лучше всего
>>>>>
>>>>>   &{$ref_sub1};
>>>>>
>>>>>   Михаил, у вас же есть подписанная Larry книга, почитайте ее :)
>>>>>
>>>>>   Митяй
>>>>>
>>>>>   On Dec 29, 2011, at 12:48 PM, Nikolay Mishin wrote:
>>>>>>    Hi MoscowPM
>>>>>>
>>>>>>    my $ref_sub1=sub {print 'By '. $_[0] };
>>>>>>    sub temop_sub{ print 'Hi '. $_[0] };
>>>>>>    my $ref_sub=\&temop_sub();
>>>>>>    $$ref_sub;
>>>>>>    &$ref_sub;
>>>>>>    Not a CODE reference at 11_sub_ref.pl line 5.
>>>>>>    &{$ref_sub1};
>>>>>>
>>>>>>    почему так?
>>>>>>    почему я не могу вызывать именованную процедуру
>>>>>>    &{$ref_sub1}; ??
>>>>>>    ведь вызывать ссылку на код с помощью
>>>>>>    & - лучше, чем с помощью $
>>>>>>    здесь явно показывается, что вызывается процедура
>>>>>>
>>>>>>    Спасибо.
>>>>>>    --
>>>>>>    Nikolay Mishin
>>>>>>    --
>>>>>>    Moscow.pm mailing list
>>>>>>    moscow-pm на pm.org | http://moscow.pm.org
>>>>>   --
>>>>>   Moscow.pm mailing list
>>>>>   moscow-pm на pm.org | http://moscow.pm.org
>>>>   --
>>>>   Nikolay Mishin
>>>>   --
>>>>   Moscow.pm mailing list
>>>>   moscow-pm на pm.org | http://moscow.pm.org
>>>  --
>>>  Moscow.pm mailing list
>>>  moscow-pm на pm.org | http://moscow.pm.org
>>  --
>>  Nikolay Mishin
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org

--
Nikolay Mishin


Подробная информация о списке рассылки Moscow-pm