[SP-pm] Dúvida com Hash Slices
Thiago Glauco Sanchez
thiagoglauco at ticursos.net
Sun Jul 25 16:46:08 PDT 2010
Em 25/07/2010 20:12, Thiago Glauco Sanchez escreveu:
> 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:
Oppps, tá certo. Confundi a resposta do Eden. Agora lendo mais devagar,
acabei de ver que disse o mesmo que o Eden. Sorry!
Bom, foi mais um exemplo para quem tinha dúvida.
>
> @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