Pacman, copião :)
2014-04-29 18:50 GMT-03:00 Blabos de Blebe <bla...@gmail.com>: > > que Modulo::funcao dispensa declarar o construtor. > > Não dispensa. Não tem nada a ver. Não misture as coisas. > > Construtor é um conceito associado a um método especial utilizado para > inicializar objetos, ou seja, quando você está utilizando uma interface > orientada a objetos. > > Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. > > Em Python é outro padrão. > > Em Perl isso é livre, um construtor, ou seja um inicializador de objetos > pode ser qualquer método que eventualmente invoque a sub bless(). > > http://perldoc.perl.org/functions/bless.html > > Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se > new. Mas não existe palavra reservada ou obrigatoriedade nisso. > > Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo > FQN. Não tem nada a ver com objetos, ou construtores. > > *** > > No seu caso, como bem observado pelo Junior, o que você quer é não ter que > passar o namespace completo, por isso o uso do Exporter, que nada mais faz > do que tornar a sua função conhecida no namespace atual. > > Exporter também não tem nada a ver com objetos. > > A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por > default. Nesse caso, ao usar o seu módulo você precisa fazer: > > use Modulo qw{ funcao }; > > Aqui, "boa prática" significa basicamente, "vou tormar o cuidado de > exportar apenas o necessário pra não correr risco de dar conflito com outra > função de mesmo nome de outro módulo". > > Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, > errado. Depende do seu contexto. > > *** > > Como em Perl as coisas são mais livres, você vai ver casos de um package > que tem construtor, métodos *E* funções comuns, ou seja, tanto uma > interface OO quanto procedural. Exemplo: > https://metacpan.org/pod/String::Trigram > > Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma > interface OO *E* uma interface procedural, pra ficar ao gosto do cliente > escolher. Outro exemplo: https://metacpan.org/pod/CGI > > Por essas e outras, *EU*, acho meio confuso ter Perl como primeira > linguagem, pois ela te dar liberdades que em não tendo todos os conceitos > bem sedimentados, *pode* confundir. > > O importante é, em estar estudando, não parar no estágio "ah consegui > fazer" mas sim prosseguir pelo menos até o "ah, entendi como funciona". > > []'s > > > > > 2014-04-29 18:32 GMT-03:00 Aureliano Guedes <guedes_1...@hotmail.com>: > > Funcionou da forma que o Junior passou. >> >> Obrigado. >> >> Experimentei fazer o dumper como o Bablos falou. Realmente são formas >> diferentes, sendo que Modulo::funcao dispensa declarar o construtor. >> >> ------------------------------ >> From: juniiior...@gmail.com >> Date: Tue, 29 Apr 2014 18:15:00 -0300 >> >> To: rio-pm@pm.org >> Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor >> >> Hi. >> >> Em 29 de abril de 2014 18:07, Blabos de Blebe <bla...@gmail.com>escreveu: >> >> Só mais uma coisa, >> >> Isso não tem nada a ver com Exporter. >> >> []'s >> >> >> Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la >> possível ser chamada à partir de outro script bastando dar um use no >> módulo, e não como invocar um método estaticamente como eu pensei. >> >> Creio que o jeito mais roots seria: >> >> >> >> >> >> >> >> >> *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA = >> (qw(Exporter));@EXPORT = qw(acp); sub acp {* >> >> *...* >> *}* >> 1; >> >> Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função >> acp() estará acessível, assim como no Math::Prime::Util. >> >> []'s >> >> _______________________________________________ >> >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> >> >> >> _______________________________________________ Rio-pm mailing list >> Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm >> >> _______________________________________________ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > >
_______________________________________________ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm