[Cascavel-pm] assinatura de método em Perl
Nilson Santos Figueiredo Junior
acid06 em gmail.com
Quinta Novembro 30 08:24:04 PST 2006
On 11/30/06, Alceu R. de Freitas Jr. <glasswalk3r em yahoo.com.br> wrote:
> Sem querer fazer comparações (e criar um flame war)
> como vocês lidam com a ausência do conceito de
> assinatura de métodos em Perl?
Design by contract.
> Por exemplo, eu quero executar uma função que vai
> precisar de mais ou menos parâmetros dependendo do
> tipo de autenticação que ela vai usar.
sub multi {
my ($param_1, $param_2, ..., $param_n) = @_;
# use somente os parâmetros necessários no caso específico
# ignore os outros, eles virão como undef
}
Ou então, você adota a convenção de sempre passar parâmetros como uma
hashref, então você terá parâmetros com nomes específicos. Esse é o
método usado pelo DBIx::Class, por exemplo.
> Em Java, o conceito de assinatura de método tornaria
> isso mais simples. Alguma dica sobre como implementar
> isso em Perl?
O que você quer são multi-métodos e é algo que estará disponível no
Perl6. Possivelmente existe algum módulo que implemente isso via
source filters em Perl5.
-Nilson Santos F. Jr.
Mais detalhes sobre a lista de discussão Cascavel-pm