[Cascavel-pm] evitando estruturas "switch-case" em métodos de uma classe

Eden Cardim edencardim em gmail.com
Quarta Março 28 10:27:13 PDT 2007


On 3/28/07, Igor Sutton Lopes <igor.sutton em gmail.com> wrote:
> Hrm, um outro email sobre a mesma coisa, um pouco mais elaborado (e
> testado):
>
> <cut>
> sub to_xml {
>  print 'process xml...', $/;
> }
>
> sub to_html {
>  print 'process html...', $/;
> }
>
> my $dispatch = {
>     'xml'  => \&to_xml,
>     'html' => \&to_html,
> };
>
> foreach (qw(xml html)) {
>  $dispatch->{$_}->();
> }
> </cut>

Outra forma de se fazer seria:

sub export {
   my $self = shift;
   my $param = shift;

   if( my $meth = $self->can("to_$param") ) {
       $meth->($self);
   } else {
       carp("Unknown format: '$param'");
   }
}

-- 
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática
--
"you seem to think that 'close enough' is close enough...
please learn to be 'literal' around programming."
merlyn - on irc.freenode.net#perl


Mais detalhes sobre a lista de discussão Cascavel-pm