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

Aureliano Guedes guedes_1000 em hotmail.com
Terça Abril 29 16:02:27 PDT 2014


>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
>>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20140429/89ea23e7/attachment.html>
-------------- Próxima Parte ----------
_______________________________________________
Rio-pm mailing list
Rio-pm em pm.org
http://mail.pm.org/mailman/listinfo/rio-pm


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