[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