[Cascavel-pm] [Golf]: vocabulário_de_re__ferências

Nelson Ferraz nferraz em phperl.com
Quinta Outubro 2 18:43:43 CDT 2003


> Vocês estão muito rápidos: eu nem tive tempo de
> responder as outras mensagens relacionadas ao assunto.
> 
> De qualquer forma, vou fazer uma pequena interrupção
> ao jogo de golf(?) e lançar uma perguntinha polêmica:
> até que ponto vale a pena matar a legibilidade para
> economizar míseros 5 ou 6 caracteres?

Tem razão! Definitivamente, não vale a pena.

Tenha em mente que o "golf" é apenas um exercício para tentar levar a 
linguagem ao limite. (Se bem que alguns dos truques que aprendemos 
definitivamente podem ser usados na prática...)

> Voltando ao ponto de referências, todas as respostas
> anteriores foram ótimas, obrigado. Mas ainda ficou uma
> dúvida:
> 
> foreach (keys(%users)) {
>        print OUT "$_: @{ $users{$_} }\n";
> }
> 
> Se que quizesse imprimir o counteúdo de cada valor do
> array referenciado dentro de uma tag html, por exemplo
> <strong></strong>, como eu faria?

Neste caso eu faria algo assim:

print "$_: <strong>$_</strong>\n" foreach @users; # já de-referenciado

Em outras palavras, imprima "$_: <strong>$_</strong>\n" para cada um dos 
elementos do array. Este loop vai dentro do outro:

foreach (keys(%users)) {
   my @users = @{$users{$_}};
   print "$_: <strong>$_</strong>\n" foreach @users;
}

Finalmente, para evitar confusões com variáveis implícitas ($_), é 
conveniente dar nome à variável do loop externo:

foreach my $user (keys(%users)) {
   my @users = @{$users{$user}};
   print "$_: <strong>$_</strong>\n" foreach @users;
}

Se você quiser, pode fazer o mesmo em apenas uma linha:

print "$_: " , map("<strong>$_</strong>", @{$users{$_}}), "\n" foreach 
keys(%users);

-- 
[]s

Nelson

________________________________________________________________
Nelson Ferraz

GNU BIS: http://www.gnubis.com.br
PhPerl:  http://www.phperl.com





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