[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