Nikolay Mishin <[email protected]> писал(а) в своём письме Thu, 29 Dec 2011 15:07:45 +0400:

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

жаль!

Спасибо за настроение.


29.12.2011, 15:37, "Dmitry Karpich" <[email protected]>:
Исчо раз.

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" <[email protected]>:
 Потому что

 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
  [email protected] | http://moscow.pm.org
 --
 Moscow.pm mailing list
 [email protected] | http://moscow.pm.org
 --
 Nikolay Mishin
 --
 Moscow.pm mailing list
 [email protected] | http://moscow.pm.org
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

--
Nikolay Mishin
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить