[Moscow.pm] Уже пишите на Perl 6?
Ruslan Zakirov
ruz на bestpractical.com
Вт Апр 10 09:09:52 PDT 2012
2012/4/9 Alexandr Gomoliako <zzz на zzz.org.ua>:
> В продолжение темы, кусочек реального кода из MuEvent:
>
> #= Add an IO::Socket to observe
> our sub socket(:&cb!, :$socket!, :$poll where 'r'|'w', :%params) {
> my $p = $poll eq 'r' ?? 1 !! 2;
> @sockets.push: {
> :$socket, :poll($p), :&cb,
> :%params,
> keep => 1
> };
> }
>
> Семантика конечно хорошо, но по-моему это уже слишком.
Перевидите код абсолютно точно в Perl5 и посмотрите сколько займет у
вас разворачивание аргументов функции (особенно без модулей). Не
нравится содержимое функции? Ну напишите ее вот так в стиле p5:
push @sockets, {
socket => $socket,
poll => $p,
cb => &cb,
params => %params,
keep => 1,
};
В оригинальном коде можно было бы использовать is copy на $poll, а
затем сделать $poll = $poll eq 'r' ??... и соответственно еще более
аккуратный push:
@sockets.push: {
:$socket, :$poll, :&cb, :%params,
keep => 1
};
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
Best regards, Ruslan.
Подробная информация о списке рассылки Moscow-pm