[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