[Moscow.pm] Прототипы

ksvs ksvs1996 на ymail.com
Чт Окт 18 05:55:36 PDT 2012



Спасибо. Оказывается я старую доку читал.
Там не было прототипа "+".



________________________________
 From: MonsAnderson <mons на cpan.org>
To: Moscow.pm group <moscow-pm на pm.org> 
Sent: Thursday, 18 October 2012, 15:27
Subject: Re: [Moscow.pm] Прототипы
 

1. Тщательно прочитайте perlsub
2. Используйте прототипы с случае, если вы делаете функцию, которая "могла-бы быть в перле", т.е. что-то похожее на встроенный функционал
3. никогда не используйте прототипы для методов (они все равно не работают)
4. Если вам нужно вызвать функцию без учета прототипа (как например foo($sub,$arg)), то можно подавить проверку прототипа при помощи &: &foo($sub,$arg);


2012/10/17 ksvs <ksvs1996 на ymail.com>

А почему для
>
>
>sub foo(&$) {
>    my ($s, $v) = @_;
>    $s->($v);
>}
>
>
>Вызов 
>foo sub { print @_ }, "hello\n";
>работат
>
>
>И 
>foo { print @_ } "hello\n";
>работает
>
>
>А
>
>my $print = sub { print @_ };
>foo $print, "hello\n";
>Не работает?
>
>
>Почему большую функцию не можно вынести отдельно?
>
>
>Неужели придется писать
>sub foo($$);
>
>
>
>
>Аналогичная ситуация с массивами и хешами:
>
>
>sub foo(\@\%) {
>    my ($a, $h) = @_;
>    print scalar @$a, "\n";
>}
>
>my @foo = (1, 2);
>my %foo = (1 => 2);
>
>
>
>Вот так работате.
>foo @foo, %foo;
>
>
>
>
>
>А так 
>
>foo \@foo, \%foo;
>не работает.
>
>
>А если у меня ссылки на массивы, что что придется их разыменовывать только для вызова?
>
>
>Зачем тогда такие прототипы нужны?
>А если везде использовать в прототипах $, то зачем тогда эти все @ и %?
>
>--
>Moscow.pm mailinglist
>moscow-pm на pm.org | http://moscow.pm.org
>
>


-- 
Bestwishes,
Vladimir V. PerepelitsaakaMonsAnderson
<inthrax на gmail.com>, <mons на cpan.org>
http://github.com/Mons

-- 
Moscow.pm mailinglist
moscow-pm на pm.org | http://moscow.pm.org
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20121018/d46441a8/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm