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