[Rio-pm] Dúvida com o foreach
breno
breno em rio.pm.org
Quinta Janeiro 10 02:40:10 PST 2008
Pq vc está pensando como C. Pense como VC! :-P
$cor não é um índice, é uma cor! Vc nomeou certo, mas usou errado :-)
"para cada cor em @cores, imprime... a própria cor!"
ou, em Perl:
foreach $cor (@cores) {
print $cor . "\n";
}
isso deve fazer o que vc quer.
Ao pedir para o Perl imprimir $cores[$cor], vc está efetivamente
pedindo que ele imprima o item da lista @cores na posição "azul",
depois na posição "verde", depois na posição "amarelo", e depois na
posição "vermelho". Essas strings, ao serem tratadas em contexto
escalar,
estão sendo avaliadas como 0 e, consequentemente, retornando $cores[0]
a cada iteração do seu foreach().
Entendeu? Se quiser manter o sotaque de C, pode tentar algo como:
for ($i = 0; $i < @cores; $i++) { # agora sim temos um índice!
print $cores[$i] . "\n";
}
[]s
-b
On Jan 10, 2008 8:20 AM, Fabrício Firmino de Faria
<firminodefaria em gmail.com> wrote:
> Olá a todos, algué poderia me dizer pq o código:
>
> @cores = ("azul","verde","amarelo","vermelho");
>
> foreach $cor (@cores) {
> print $cores[$cor],"\n";
> }
>
> imprime azul
> azul
> azul
> azul
>
>
> VLW
>
>
>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
Mais detalhes sobre a lista de discussão Rio-pm