[SP-pm] Verificação de parâmetros em métodos

Andre Carneiro andregarciacarneiro at gmail.com
Wed Dec 5 02:05:01 PST 2012


Valeu pessoal!



2012/12/4 Renato Santos <renato.cron at gmail.com>

> Sim,
>
> e não tem 'na teoria', ta programado pra receber um scalar!
>
>
> 2012/12/4 Andre Carneiro <andregarciacarneiro at gmail.com>
>
>> Hummm... acho que entendi... na verdade \@_ tem as referências para:
>> $foo, $baz e $gorch. Os outros parâmetros são apenas a especificação de
>> como eu quero que esses dados sejam validados, é isso?
>>
>> Se for assim, em 'teoria', eu poderia fazer isso de uma outra forma:
>>
>> <code>
>>
>> sub bar {
>>     my $self = shift;
>>     my @Values_to_validate = ('val1','val2','val3');
>>     my ( $foo, $baz, $gorch ) = validated_list(
>>         \@Values_to_validate,
>>         foo   => { isa => 'Foo' },
>>         baz   => { isa => 'ArrayRef | HashRef', optional => 1 },
>>         gorch => { isa => 'ArrayRef[Int]', optional => 1 }
>>     );
>>     [ $foo, $baz, $gorch ];
>> }
>>
>> </code>
>>
>>
>> Correto?
>>
>>
>> Cheers!
>>
>>
>>
>>
>> 2012/12/4 Eden Cardim <eden at insoli.de>
>>
>>> The following message is a courtesy copy of an article
>>> that has been posted to gmane.comp.lang.perl.perl-mongers.saopaulo as
>>> well.
>>>
>>> >>>>> "Andre" == Andre Carneiro <
>>> andregarciacarneiro-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org> writes:
>>>
>>>     Andre> Hummm... acho que fui vago demais!  Vamos ver se consigo me
>>>     Andre> expressar melhor...
>>>
>>>     Andre> A pergunta é a seguinte: tudo o que eu passo de útil para o
>>>     Andre> método ' validated_list' não tem nada a ver com \@_. Então
>>>     Andre> por que eu preciso passar isso como referência? Referência
>>>     Andre> de que?
>>>
>>>     Andre> Mesmo olhando o código do módulo, não consegui entender
>>>     Andre> direito o que ele leva nessa referência, e ainda por cima,
>>>     Andre> o método é estático! Que diabos tem dentro desse \@_ ? E
>>>     Andre> como isso vai parar lá, já que não tem instância nenhuma do
>>>     Andre> módulo, só um 'use'...(método estático, tá
>>>     Andre> ligado?). Desconfio que a resposta tenha a ver com o 'use',
>>>     Andre> mas não tenho certeza.
>>>
>>> Observe que a assinatura do método é
>>> validated_hash($argumentos,%especificacao).
>>>
>>> O único motivo pelo qual você precisa passar o @_ por referência é pra
>>> não misturar os argumentos com a especificação, que vem depois.
>>>
>>> --
>>> Eden Cardim -- Insolide Soluções de TI Ltda.
>>> +55 11 9644 8225
>>> http://insoli.de
>>> =begin disclaimer
>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>
>>
>>
>> --
>> André Garcia Carneiro
>> Software Engineer
>> (11)982907780
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
André Garcia Carneiro
Software Engineer
(11)982907780
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20121205/3cb8f305/attachment.html>


More information about the SaoPaulo-pm mailing list