[Rio-pm] importando métodos?

Solli Honorio shonorio em gmail.com
Quinta Novembro 6 08:10:40 PST 2008


Eden, o 'use base' não resolve o problema ?

Pedro eu não entendi bem o teu problema, mas se for relacionado a herança,
você pode encontrar informações no 'perldoc perlboot'.

Solli M. Honório

2008/11/5 Eden Cardim <edencardim em gmail.com>

> 2008/11/5 Pedro Henrique <phikeda em gmail.com>:
> > Amigos,
> >
> > alguém sabe se é possível "importar" um método para dentro de um objeto?
> Por
> > exemplo:
> >
> > package AdicionaMetodo;
> >
> > sub importar
> > {
> >     my $objeto = shift;
> >     # adiciona a sub "novo" (é possível ???)
> > }
> >
> > sub novo
> > {
> >    print "alo, mundo!\n";
> > }
> >
> > 1;
> >
> > package Principal;
> > use AdicionaMetodo;
> >
> > sub new
> > {
> >     my $class = shift;
> >     my $self = {};
> >     bless $self, $class;
> >
> >     AdicionaMetodo::importar($self);
> >     return $self;
> > }
> >
> > 1;
> >
> > e agora no meu programa posso fazer:
> >
> > use Principal;
> >
> > my $objeto = Principal->new();
> > $objeto->novo();  # exibe "alo, mundo!"
> >
> >
> > Só consigo fazer adicionando referência à minha função, mas nesse caso o
> > programa fica mais ou menos assim:
> >
> > $objeto->{novo}->();
> >
> > e eu queria que fosse como um método mesmo:
> >
> > $objeto->novo();
> >
> >
> > Alguém pode me dar uma luz?
>
> Bom, se fosse JavaScript dava, mas no perl você só pode criar um
> método para a classe inteira (não pro objeto), os gurus dos internals
> podem me corrigir aqui. Mas a principal pergunta é: porque você quer
> fazer isso?
>
> Um meio-termo seria criar um método de acesso que fizesse a
> dereferenciação por você
>
> sub novo {
>  shift->{novo}->(@_)
> }
>
> --
> edenc.vox.com
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20081106/2598291d/attachment.html>


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