[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