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

Blabos de Blebe blabos em gmail.com
Terça Abril 29 14:07:24 PDT 2014


Só mais uma coisa,

Isso não tem nada a ver com Exporter.

[]'s


2014-04-29 18:06 GMT-03:00 Blabos de Blebe <blabos em gmail.com>:

> Opa,
>
> A expressão:
>
> Modulo::funcao( arg1, arg2 );
>
> Significa:
>
> Invoque a função 'funcao' do módulo 'Modulo', passando como argumentos
> 'arg1', 'arg1' *E* especificando o namespace completo.
>
> Dentro da sub 'funcao' se você fizer algo como:
>
> sub funcao {
>   use Data::Dumper;
>   warn Dumper \@_
> }
>
> Vai ver que só existem dois argumentos, 'arg1' e 'arg2', respectivamente.
>
> O que é ligeiramente diferente de:
>
> Modulo->funcao(arg1, arg2);
>
> Isso significa, invoque a função 'funcao' do módulo 'Modulo', passando
> 'arg1' e 'arg2', *MAS*, passe *implicitamente* o nome da "classe" (no caso
> 'Modulo') como primeiro argumento.
>
> Assim, se você observar o resultado do Dumper, no mesmo código vai ver que
> agora há *TRÊS* argumentos, e não dois.
>
> É por isso que existem documentações antigas, onde a invocação do
> 'construtor' (que convencionamos se chamar new()) pode ser feita assim:
>
> my $obj = new Modulo;
>
> Vejam, portanto, que são equivalentes sintaticamente:
>
> my $obj = new Modulo;
> my $obj = Modulo->new;
>
> Exemplo do caso do Aureliano:
>
> https://metacpan.org/pod/File::Spec
>
> Exemplo de documentação com a forma menos idiomática:
>
> https://metacpan.org/pod/String::Trigram
>
> []'s
>
>
>
>
> 2014-04-29 17:43 GMT-03:00 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
>
> isto é uma subrotina exportada
>>
>> onde vc viu
>>
>> my $p;
>>
>> $p->algumacoisa;
>>
>> ?
>>
>>
>> 2014-04-29 17:40 GMT-03:00 Aureliano Guedes <guedes_1000 em hotmail.com>:
>>
>> #!/usr/bin/perl
>>>
>>> use strict;
>>> use warnings;
>>> use Math::Prime::Util ':all';
>>>
>>> print "ok" if (is_prime($ARGV[0]));
>>>
>>> ------------------------------
>>> From: tiago.peczenyj em gmail.com
>>> Date: Tue, 29 Apr 2014 17:36:23 -0300
>>> To: rio-pm em pm.org
>>> Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor
>>>
>>>
>>> de exemplos.
>>>
>>>
>>>
>>>
>>> 2014-04-29 17:34 GMT-03:00 Aureliano Guedes <guedes_1000 em hotmail.com>:
>>>
>>> Ola monges,
>>>
>>> Tenho uma pequena dúvida.
>>> Quando vamos usar uma função(sub-rotina) de um módulo fazemos na maioria
>>> das vezes o seguinte:
>>>
>>> use Modulo::Modulo;
>>>
>>> my $p = Modulo::Modulo->new();
>>> $p->funcao();
>>> ....
>>>
>>> isso porque no modulo tem um contrutor ou foi gerado de presente ao
>>> autor quando usado o Moose ou semelhante.
>>>
>>> A questão é que alguns poucos módulos permitem que seja feito diretamente
>>>
>>> use Modulo::Modulo;
>>>
>>> my $p;
>>> $p->funcao();
>>> ....
>>>
>>> A dúvida é: como o autor do módulo faz para que permita fazer a chamada
>>> das funções sem precisar disso:
>>> my $p = Modulo::Modulo->new();
>>>
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>>
>>>
>>>
>>> --
>>> Tiago B. Peczenyj
>>> Linux User #405772
>>>
>>> http://about.me/peczenyj
>>>
>>> _______________________________________________ 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
>>>
>>
>>
>>
>> --
>> Tiago B. Peczenyj
>> Linux User #405772
>>
>> http://about.me/peczenyj
>>
>> _______________________________________________
>> 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/a28f3284/attachment-0001.html>


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