[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