[SP-pm] Dúvida sobre como "jogar" um array dentro de um hash.

Daniel de Oliveira Mantovani daniel.oliveira.mantovani at gmail.com
Wed Jul 21 19:18:41 PDT 2010


Flávio, a chave de hash "key" é um índice, pense num hash como um
array só que ao invés do índice ser restrito a um número, pode ser a
uma string.
Quando você está trabalhando com hashes você não tem uma ordem
estabelecida como num array.

olha só, "índice => valor"
mantovani em mantovani-desktop:~$ perl -E '@array[0 .. 9] = 0 .. 9; say
"$_ => $array[$_]" for 0 .. 9'
0 => 0
1 => 1
2 => 2
3 => 3
4 => 4
5 => 5
6 => 6
7 => 7
8 => 8
9 => 9

mantovani em mantovani-desktop:~$ perl -E ' @hash{0 .. 9} = (0 ..9); say
"$_ => $hash{$_} " for keys %hash'
6 => 6
3 => 3
7 => 7
9 => 9
2 => 2
8 => 8
1 => 1
4 => 4
0 => 0
5 => 5

Percebeu a diferença ?
Você pode ordenar um hash usando a função sort:

mantovani em mantovani-desktop:~$ perl -E ' @hash{0 .. 9} = (0 ..9); say
"$_ => $hash{$_} " for sort keys %hash'
0 => 0
1 => 1
2 => 2
3 => 3
4 => 4
5 => 5
6 => 6
7 => 7
8 => 8
9 => 9

Da uma linda, conceitos muito interessantes.
http://en.wikipedia.org/wiki/Hash_table
http://perldoc.perl.org/perlintro.html#Perl-variable-types

[]'s

2010/7/21 "Flávio R. Lopes" <flavio.lopes em links.inf.br>:
> Olá pessoal.
>
> Num dos exercícios que estou fazendo, uma das soluções (pelo menos que estou
> imaginando) seria colocar o conteúdo de um array dentro de um hash, mas
> quando os elementos são repetidos, só insere a primeira instância do
> elemento.
>
> Supondo um array com os elements:
>
> my  @numeros = (1, 2, 3, 4, 5, 6, 6, 6, 5);
>
> my  %hash = map { $_ => $_ } @numeros;
>
>  while ( my ($chave, $valor) = each %hash ) {
>
>        say "$chave => $valor";
>
>  }
>
>
> Tenho como saída:
> 6 => 6
> 4 => 4
> 1 => 1
> 3 => 3
> 2 => 2
> 5 => 5
>
>
> Porque os outros dois elementos "6" e o último elemento "5" não são
> armazenados dentro do hash?
> Gostaria que produzisse a seguinte saída (como todos os 9 elementos do
> array):
>
> 6 => 6
> 6 => 6
> 6 => 6
> 4 => 4
> 1 => 1
> 3 => 3
> 2 => 2
> 5 => 5
> 5 => 5
>
> Onde estou errando?
>
> Abraço,
> Flávio
>
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
http://www.danielmantovani.com

"If you’ve never written anything thoughtful, then you’ve never had
any difficult, important, or interesting thoughts. That’s the secret:
people who don’t write, are people who don’t think."


More information about the SaoPaulo-pm mailing list