[Moscow.pm] function ref

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


То есть создавать ссылки на функции - плохая идея
(у меня так и не заработала передача параметров)
ну в общем понятно,
объектов с пакетами должно быть достаточно
для всяких хитростей и усложнения кода 

жаль!

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