[SP-pm] Dúvida com Hash Slices

"Flávio R. Lopes" flavio.lopes at links.inf.br
Sun Jul 25 20:11:28 PDT 2010


Grande mestre Thiago, como vai?

Em 25-07-2010 12:11, Thiago Glauco Sanchez escreveu:
> Flávio >>>>
> 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" ?
> >>>>
>
> O perl sabe que vc se refere a um hash pelas chaves { } e a um array 
> pelos ( ). Os { } indicam que são chves de um hash e ( ) indicam que 
> são elementos de um array.
> Acho que era esta a sua pergunta?
Só para ver se entendi mesmo, então quando tenho:

my %quantidade;
.
.
.
.
@quantidade{ @frutas } = @unidades;  ## => O perl sabe que "@quantidade" 
refere-se ao hash "my %quantidade" por causa do {} ?



>
>
> Flávio >>>>>
> 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
> <<<<<<
>
> Sim, pode entender assim por que é isso que ocorre.
> é o mesmo que:
> @quantidade{ *bananas, laranjas, melões } = (qw / 5 10 15 /)
>
>
>
> Em 24/07/2010 23:55, "Flávio R. Lopes" escreveu:
>> 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 em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>



More information about the SaoPaulo-pm mailing list