[SP-pm] Verificação de parâmetros em métodos
Andre Carneiro
andregarciacarneiro at gmail.com
Tue Dec 4 11:48:25 PST 2012
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20121204/f2553296/attachment.html>
More information about the SaoPaulo-pm
mailing list