[Rio-pm] importando métodos?
Eden Cardim
edencardim em gmail.com
Terça Novembro 4 21:25:30 PST 2008
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
Mais detalhes sobre a lista de discussão Rio-pm