[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