[SP-pm] Dúvida com Hash Slices

Renato Santos renato.cron at gmail.com
Sun Jul 25 08:48:13 PDT 2010


Os hash são gardados usando B-Tree, não é?

2010/7/25 Blabos de Blebe <blabos at gmail.com>

> Além do mais, hashes e arrays tem representações internas bem
> distintas. Um hash é basicamente uma tabela, enquanto um array é uma
> lista. O Perl sempre vai saber a diferença.
>
> O que pode confundir é que a linguagem Perl fornece alguns 'syntax
> sugars' que abstraem e facilitam o intercâmbio te dados entre hashes e
> arrays.
>
> Embora dê para fazer isso:
>
> my @array = qw(1 2 3 4);
> my %hash = @array;
> my @lista = %hash;
>
> Hashes e arrays são internamente bem diferentes. A cada atribuição,
> internamente um objeto diferente é acessado e a conversão adequada é
> feita de forma transparente.
>
> Abraços
>
> 2010/7/25 Eden Cardim <edencardim at gmail.com>:
> >>>>>> "Thiago" == Thiago Glauco Sanchez <thiagoglauco at 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:
> >
> > @{$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 at pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Renato Santos
http://www.renatocron.com/blog/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100725/49f0cd56/attachment.html>


More information about the SaoPaulo-pm mailing list