[Rio-pm] hash como parametro

Daniel de Oliveira Mantovani daniel.oliveira.mantovani em gmail.com
Quarta Junho 30 12:35:53 PDT 2010


> Como eu disse isto ocorre pq o perl cópia os valores, e neste caso estamos
> falando de transferência (ou atribuições) de valores de uma lista para as
> variáveis, seria o mesmo que :
>
> my ($a, $b, $c) = qw( 0 zero 1 um 2 dois 3 tres);

Quando o lefthand side está no contexto scalar, o operador vírgula
avalia o lefthand side e traz o resultado mais a direita, como o
lefthand side não está no contexto scalar e sim no contexto de lista,
o Perl vai avaliar do mais a esquerda para a direita. O divertido
disso que no contexto scalar é o operador de vírgula que avalia o
lefthand side.

> my (@array, $c) = qw( 0 zero 1 um 2 dois 3 tres);

No contexto, o lefthand side está está avaliando o righthand side no
contexto de lista, mas como o first value é uma lista, e o first value
atribui a lista toda.

> my (%hash, @array) = qw( 0 zero 1 um 2 dois 3 tres);

Aqui acontece a mesma coisa no contexto de lista, só muda que vai
formando key => values, com os dois primeiros argumentos da lista até
ela se acabar,

0 => zero,
1 => um,
2 => dois,
3 => tres,

E o @array acaba como o $c do exemplo anterior, vazio.

Faz tempo que eu não vejo isso, talvez eu me enganei em algum detalhe.

[]'s

>
> É possível entender o que acontecerá com cada atribuição sem executar o
> código ? Execute e veja o que acontece !
>
> Abraços,
>
> Solli M. Honório
>
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
> --
> "o animal satisfeito dorme". - Guimarães Rosa
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
http://www.danielmantovani.com
"If you’ve never written anything thoughtful, then you’ve never had
any difficult, important, or interesting thoughts. That’s the secret:
people who don’t write, are people who don’t think."


Mais detalhes sobre a lista de discussão Rio-pm