Модули Moose, Moo etc используют так называемые «роли». Утверждается, что роли - это альтернатива наследованию.
Не могу понять суть этого явления. Для чего нужны роли? Почему не обойтись наследованием через extends?
У меня сложилось впечатление, что роли преследуют некую академическую цель, мол "множественное наследование это плохо, по возможности избегайте". Но есть ли практический смысл?
Вроде бы пользы никакой, наоборот, только мешает.
К примеру, есть классы "Здание" и "Общественное заведение". Используя множественное наследование мы можем сделать класс "Ресторан". А еще можем сделать экземпляр класса "Здание" и использовать Здание само по себе - к празднику украшать.
А если "Здание" и "Общественное заведение"- это роли? "Ресторан" мы сделаем, но вот Здание само по себе уже не можем использовать. Но ведь это же неудобно, Здание может понадобиться по отдельности, заранее ведь не угадаешь. Объявишь его ролью - и все, привет, к празднику его уже не украсишь, пока в нем Ресторан не разместится.
Зачем тогда нужны роли?
_italic_
→ italic
**bold**
→ bold
[PP](http://pragmaticperl.com)
→
<http://pragmaticperl.com>
→
module:Plack
→
release:URI
→
author:VTI
→
`my $foo = 'bar'`
```
my $multi;
$line;
```