[SP-pm] Dúvida com Hash Slices

Thiago Glauco Sanchez thiagoglauco at ticursos.net
Sun Jul 25 16:12:08 PDT 2010


Em 25/07/2010 12:26, Eden Cardim escreveu:
>>>>>> "Thiago" == Thiago Glauco Sanchez<thiagoglauco em ticursos.net>  writes:
>>>>>>              
>      Thiago>  O perl sabe que vc se refere a um hash pelas chaves { } e a um array
>      Thiago>  pelos ( ). Os { } indicam que são chves de um hash e ( )
>      Thiago>  indicam que são elementos de um array.  Acho que era esta a
>      Thiago>  sua pergunta?
>    
> Na verdade, os parênteses são apenas para forçar precedência e não tem
> relação alguma com tipos de dados. Perl faz a diferenciação entre
> referências para arrays e hashes pela presença de '{}' ou '[]' como indexador:
>
>    
Tem sim. Não se esqueça que no Perl %array e @array são dois tipos de 
dados diferentes e duas variaveis diferentes:

@array = ('a'..'z'); #é um array
@array{'a','b', 'c'} = (1,2,3); #é um hash slice somente por causa dos { 
}, se fossem [ ] seria um array slice

print $array[0],"\n"; #evoca o array
print $array{a},"\n"; #evica o hash
map{print "$_ "} keys @array; #indices do array
print "\n";
map{print "$_ "} sort keys %array; #chaves do hash

saída:

a
1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
a b c

> @{$array}[1, 2, 3] = qw(foo bar baz);
> @{$hash}{qw(foo bar baz)} = qw(quux moin meep);
>
> O mesmo vale para construção de arrays e hashes anônimos:
>
> my $array = ['foo', 'bar', 'baz'];
> my $hash = {'foo', 'quux', 'bar', 'moin', 'baz', 'meep'}
>
> Listas são construídas pelo operador ',', que tem precedência menor que
> o operador '=', então, no caso de:
>
> @foo = (1, 2, 3);
>
> Os parênteses estão sendo usados para forçar a construção da lista antes
> da atribuição. Se fosse:
>
> @foo = 1, 2, 3;
>
> O resultado seria um array contendo o elemento "1" e uma lista contendo
> 1, 2, 3 retornada em contexto void.
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm


-- 
What is the sound of Perl? Is it not the sound of a wall that people have
stopped banging their heads against?
—Larry Wall

Thiago Glauco Sanchez
Intrutor Perl e Redes
www.ticursos.net



More information about the SaoPaulo-pm mailing list