[Moscow.pm] Кто Moose использует?

Ruslan Zakirov ruslan.zakirov на gmail.com
Вс Ноя 29 15:24:41 PST 2009


Объяснение существования ролей:
http://www.modernperlbooks.com/mt/2009/05/perl-roles-versus-interfaces-and-abcs.html

Там самом начале ссылки на несколько статей, в том числе сравнение с
наследованием.

Идея в лучшем абстрагировании. Есть неплохие статьи как люди меняют
большие схемы наследования на более мелкие с ролями, что позволяет
сделать структуру проекта более прозрачной.

Родился в голове тупой пример. Есть классы представляющие диск
(накопитель) и число. У обоих есть метод format, но как вы понимаете
делают они кардинально разные вещи. Значит нам не стоит пробовать
->can('format') для идентификации. Также нам не стоит проверять через
->isa('Number'), существует много объектов которые нужно форматировать
перед отображением и это не только числа.

Тогда мы вводим класс (роль) Displayable, Printable,
HasPlainTextRepresentation или что-то еще, который реализует для нас
интерфейс. Этот класс должен требовать от его пользователей метод
format. Это одна из фич ролей. Вы можете сказать, что эту роль можно
применить к классу или объекту, только в том случае, если он реализует
метод X.

Как правильно отмечено в мануале муза, роли можно сравнить с
абстрактными классами, которые присутствуют в C++ и других языках:
http://search.cpan.org/~flora/Moose-0.93/lib/Moose/Manual/Roles.pod#Roles_Versus_Abstract_Base_Classes

Все это тонкие материи и как говорится subject to change. Через год
другой будем писать на каком-нибудь дружественном функциональном языке
и забудем о ролях.

2009/11/30 Dmitry E. Oboukhov <unera на debian.org>:
> RZ> параметризованные роли, атрибуты классов и еще найти видео или
> RZ> презентации nothingmuch с это yapc::eu
>
> Читаю про эти роли и не въеду. чем такой подход лучше множественного
> наследования?
> --
> ... mpd is off
>
> . ''`.                               Dmitry E. Oboukhov
> : :’  :   email: unera на debian.org jabber://UNera@uvw.ru
> `. `~’              GPGKey: 1024D / F8E26537 2006-11-21
>  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iEYEAREDAAYFAksS4WwACgkQq4wAz/jiZTeQaACeP478387OYTwkA9ST7szme7ig
> DHAAnAziYTtR/cEllTFpzCDJL8x+4iLn
> =1qkI
> -----END PGP SIGNATURE-----
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>



-- 
Best regards, Ruslan.


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