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

Renato Santos renato.cron at gmail.com
Tue Dec 4 12:06:40 PST 2012


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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20121204/e931280c/attachment.html>


More information about the SaoPaulo-pm mailing list