[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