[Rio-pm] Objetos Moose vs NonMoose

Junior Moraes juniiior182 em gmail.com
Quarta Setembro 12 07:14:18 PDT 2012


Hi.

Módulos criados com *bless* possuem um modelo diferente dos módulos que
utilizam o Moose, certo?
Na verdade não sei, mas era o que eu achava até então.

Sempre achei que sendo diferentes, pra utilizarmos herança, o modelo do *
package* seria incompatível um com o outro, e pra isso eu utilizava o
módulo MouseX::NonMoose.

Eis que fuçando um pouco o módulo Badger::Log::File, experimentei testar os
*method modifiers* pra jogar a saída também pro STDERR:


extends 'Badger::Log::File';

after qw {
        info
        debug
        warn
        fatal
        error
    } => sub {
    say STDERR $_[1];
};

Eis que fui ver a lista de deps do Badger::Log::File, e é gigante... Só que
*sem* o Moose! Logo, pensei que isso não funcionaria mas funciona!

Pra ilustrar melhor a situação:


package Fvox;
use common::sense;
sub new {
    bless {}, shift;
}

sub execute {
    my $self = shift;
    say 'Do...';
}

1;

package Junior;

use Moose;
extends 'Fvox';

after 'execute' => sub {
    say STDERR 'It works?!';
};

1;

my $fx = new Junior();
$fx->execute();




Alguém pode falar mais sobre objetos Moose vs NonMoose?
Quais as incompatibilidades que eu poderia enfrentar, se isso não
funcionava numas versões anteriores,  etc?

-- 

 ______________________
< Junior "fvox" Moraes >
 ----------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120912/17a6b08d/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm