> café deve ser 'duro' TimToady!!!
2014-04-29 19:12 GMT-03:00 Renato Santos <renato.c...@gmail.com>: > Cara, café não se pode ferver! seu café deve ser 'duro' > > > 2014-04-29 19:01 GMT-03:00 Blabos de Blebe <bla...@gmail.com>: > > Enquanto meu café ferve, aqui vale uma reflexão: >> >> "Boas práticas" é um conceito flutuante. >> >> Perl é uma linguagem extremamente rica e se desenvolvimento bastante >> dinâmico. O que era boa prática quando eu aprendi, já não é boa prática >> hoje. As coisas mudam. >> >> http://perldoc.perl.org/perlhist.html >> >> Embora muita gente fale que Perl é pré-histórico, a versão mais atual foi >> lançada em janeiro. Se você bobear, você que fica pré-histórico. >> >> []'s >> >> >> >> >> 2014-04-29 18:52 GMT-03:00 Blabos de Blebe <bla...@gmail.com>: >> >> 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 >> > > > > -- > Saravá, > Renato CRON > http://www.renatocron.com/blog/ > @renato_cron <http://twitter.com/#!/renato_cron> > > _______________________________________________ > 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