[Rio-pm] [DUVIDA] Chamar função sem declarar construtor

Daniel Vinciguerra dan.vinciguerra em gmail.com
Terça Abril 29 16:25:09 PDT 2014


Boas praticas com Delphi é ruim heim hahaha


*Daniel Vinciguerra (@dvinciguerra)*
Web solution architect, perl dev, vegetarian, geek and founder at *Bivee*
bivee.com.br  -  github.com/Bivee


2014-04-29 20:11 GMT-03:00 Renato Santos <renato.cron em gmail.com>:

> ** FLAME WARRRRRR***
> C++ e Delphi ?
>
> linus torvalds discorda disso!
>
> http://article.gmane.org/gmane.comp.version-control.git/57918
>
>
>
>
> 2014-04-29 20:02 GMT-03:00 Aureliano Guedes <guedes_1000 em hotmail.com>:
>
>  >ter Perl como primeira linguagem
>> Esse foi meu feliz erro.
>> Sofro com alguns problemas de boas praticas mas em questão de logica pura
>> eu m dou bem.
>> Eu diria que quem quer aprender logica deveria aprender Perl.
>> Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar
>> aprender boas praticas.
>>
>>
>>
>> Blabos de Blebe <blabos em gmail.com> escreveu:
>>
>>  Mas ok, não é uma boa prática...
>>
>>
>> 2014-04-29 19:15 GMT-03:00 Blabos de Blebe <blabos em gmail.com>:
>>
>> > café deve ser 'duro'
>>
>>  TimToady!!!
>>
>>
>> 2014-04-29 19:12 GMT-03:00 Renato Santos <renato.cron em 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 <blabos em 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 <blabos em gmail.com>:
>>
>>  Pacman, copião :)
>>
>>
>> 2014-04-29 18:50 GMT-03:00 Blabos de Blebe <blabos em 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_1000 em 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: juniiior182 em gmail.com
>> Date: Tue, 29 Apr 2014 18:15:00 -0300
>>
>> To: rio-pm em 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 <blabos em 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 em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>>
>>
>> _______________________________________________ Rio-pm mailing list
>> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>>
>>
>>
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em 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 em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>>
>>
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em 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 em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20140429/c490e7e1/attachment.html>


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