[SP-pm] Dúvida com Hash Slices

Andre Carneiro andregarciacarneiro at gmail.com
Sun Jul 25 05:17:28 PDT 2010


Desculpe ...

Esse trecho:

e também é a mesma coisa que:


my %lista  = (banana => 5 ,
                   laranhas => 10 ,
                   melões => 15
                 );



Era para ser assim:

e também é a mesma coisa que:


my %quantidade  = (banana => 5 ,
                   laranhas => 10 ,
                   melões => 15
                 );


Em 25 de julho de 2010 09:14, Andre Carneiro
<andregarciacarneiro at gmail.com>escreveu:

> INTRODUÇÃO:
>
>
> A palavra chave para você entender isso é LISTA. Você pode se referir a
> LISTAS de várias maneiras:
>
> my %lista  = (banana => 5 ,
>                    laranhas => 10 ,
>                    melões => 15
>                  );
>
> ou
>
> my %lista  = (banana , 5 , laranjas, 10, melões , 15);
>
>
> ou
>
> my %lista = qw / banana 5 laranjas 10 melões 15 /;
>
>
> etc...
>
>
> São todos LISTAS para Perl, acessíveis em forma de hash ou array( você
> precisa escolher um ). No entanto, Perl tem a flexibilidade de poder
> interpretar um array para montar um hash, e vice-versa. Nesse caso em que
> estamos montando um hash através de um array, o primeiro valor do array é a
> chave, e o segundo é o valor dessa chave, e assim por diante. Se o último
> valor estiver faltando( ex: my %lista = (1,'um',2) ), o último valor vem
> como 'undef' no hash.
>
>
> my @frutas = qw / bananas laranjas melões /;
> my @unidades = qw / 5 10 15 /;
>
> %quantidade{ @frutas } = @unidades;
>
> É a mesma coisa que:
>
>
> my %quantidade  = (banana , 5 , laranjas, 10, melões , 15);
>
>
> e também é a mesma coisa que:
>
>
> my %lista  = (banana => 5 ,
>                    laranhas => 10 ,
>                    melões => 15
>                  );
>
>
>
> capito?
>
>
>
>
> OBS1: No entanto é preciso deixar claro que, no seguinte caso abaixo:
>
> my %lista = (banana , 5 , laranjas, 10, melões , 15);
>
> e
>
> my @lista = (banana , 5 , laranjas, 10, melões , 15);
>
>
> SERIAM VARIÁVEIS DIFERENTES!!!
>
>
>
>
> RESPONDENDO AS PERGUNTAS
>
>
>
>
>
> 1) São todos LISTAS para Perl, independentemente se são 'arrays' ou
> 'hashes'. São apenas maneiras diferentes de se referir a listas;
>
> 2) Sim, pode. O 'hash' %quantidade é 'montado' a partir de duas LISTAS:
> @quantidade e @frutas. O interpretador se vira com isso( Veja a introdução
> ).
>
>
>
>
> Mais detalhes? Leia aqui:
> http://perldoc.perl.org/perldata.html#List-value-constructors e depois
> traga suas dúvidas   ;-) .
>
>
>
>
>
> Cheers!
>
>
>
>
> 2010/7/24 "Flávio R. Lopes" <flavio.lopes at links.inf.br>
>
>>  Olá pessoal, tudo bem?
>>
>>
>> Seguinte, estou tendo certa dificuldade para entender sobre Hash Slices.
>>
>> Vi um exemplo de Hash Slices  no livro que estou lendo e tentei montar um
>> para tentar entender o funcionamento:
>>
>>     my %quantidade;
>>
>>     my @frutas = qw / bananas laranjas melões /;
>>     my @unidades = qw / 5 10 15 /;
>>     @quantidade{ @frutas } = @unidades;
>>
>>     foreach my $frutas ( @frutas ) {
>>         say "Eu comprei $quantidade{$frutas} $frutas"
>>     }
>>
>> Minhas dificuldade são:
>> 1)
>> Como o Perl "sabe" que "@quantidade" refere-se ao hash "%quantidade"  ?
>> Por exemplo, se houvesse um outro array "*@quantidade* = qw/ 1 2 /"
>> porque não causa confusão com "*@quantidade*{ @frutas } = @unidades" ?
>>
>> 2)
>> Na linha: @quantidade{ @frutas } = @unidades;
>> ## Posso entender que é aqui que é "montado" o hash "%quantidade"  ?
>>
>> Onde:
>> Para cada chave: *@quantidade{ @frutas }*
>> É atribuído um valor: *@unidades*
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>
>
>
> --
> André Garcia Carneiro
> Analista/Desenvolvedor Perl
> (11)82907780
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
(11)82907780
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100725/1f40d01e/attachment-0001.html>


More information about the SaoPaulo-pm mailing list