[Moscow.pm] function ref

Dmitry Karpich meettya на gmail.com
Чт Дек 29 03:37:55 PST 2011


Исчо раз.

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