[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