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

Ulisses Montenegro ulisses.montenegro at gmail.com
Mon Dec 3 13:41:15 PST 2012


André,

Faz tempo que não brinco com Perl, mas se a memória não falha, existiriam
dois motivos legítimos para utilizar um parâmetro por referência (que é o
que o \@_ representa, uma referência para o @_):

1. Modificar os valores originais, já que o comportamento padrão de Perl é
passagem por valor e não por referência, ou
2. Evitar a cópia dos valores dos parâmetros (nesse caso seria mais uma
otimização do que uma necessidade)

Como dizem os americanos, I might be putting my foot in my mouth, mas acho
que seria isso. Para mais detalhes sobre o uso de referências em Perl,
'perldoc perlref'.

[]'s


2012/12/3 Andre Carneiro <andregarciacarneiro at gmail.com>

> Boa noite!
>
>
> Estou fazendo uma pesquisa sobre validação de parâmetros em métodos, para
> módulos que utilizam Moose. Encontrei a seguinte solução abaixo:
>
>
>
>
> http://search.cpan.org/~drolsky/MooseX-Params-Validate-0.16/lib/MooseX/Params/Validate.pm
>
>
>
> No entanto, tem um detalhe que eu não compreendi. Porque eu preciso passar
> \@_ para o método 'validated_list' ?
>
> Dei uma olhada no código, e vi que ele utiliza o primeiro parâmetro que é
> chamado de '$args' dentro do método e existe um algoritmo que faz uma série
> de verificações nessa variável e depois envia para validate_with, através
> do módulo Params::Validate. Lá descobri que 'validate_with' é um 'símbolo'
> que é interpretado como uma sub por um outro método, enfim... Tem alguém
> por aqui capaz de me ajudar a entender esta "bagunça" e, principalmente,
> porque do \@_ ??
>
>
> OBS: Antes de qualquer troll me interpretar mal, repare que coloquei
> 'bagunça' entre aspas, o que significa que não acho que isso realmente seja
> uma bagunça. Por favor, evitem comentários inúteis em cima disso! Já me
> considero velho e sem saco pra flames...  ;-)
>
>
> Obrigado!
>
>
>
>
> --
> 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
>
>


-- 
“If debugging is the process of removing software bugs, then programming
must be the process of putting them in.” - Edsger Dijkstra
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20121203/fdb564e8/attachment.html>


More information about the SaoPaulo-pm mailing list