[SP-pm] Dúvida com Hash Slices
Eden Cardim
edencardim at gmail.com
Sun Jul 25 16:51:03 PDT 2010
>>>>> "Thiago" == Thiago Glauco Sanchez <thiagoglauco em ticursos.net> writes:
Thiago> Tem sim.
Tem não.
Thiago> Não se esqueça que no Perl %array e @array são dois
Thiago> tipos de dados diferentes e duas variaveis diferentes:
Thiago> @array = ('a'..'z'); #é um array
Thiago> @array{'a','b', 'c'} = (1,2,3); #é um hash slice somente por causa dos { }, se fossem [ ] seria um array slice
Repetindo:
Eden> Na verdade, os parênteses são apenas para forçar precedência e
Eden> não tem relação alguma com tipos de dados. Perl faz a
Eden> diferenciação entre referências para arrays e hashes pela
Eden> presença de '{}' ou '[]' como indexador
Para esclarecer mais ainda, os operandos do operador de atribuição não
tem vínculo algum, no caso de:
@array = ('a'..'z');
Quem constrói a lista é o operador '..', e quem determina o tipo de dado
onde a lista vai ser armazenada é o sigil, do lado esquerdo. Os
parênteses nem são necessários nesse caso, já que o operador de intevalo
('..') não é associativo e tem maior precedência sobre o operador de
atribuição ('='), experimenta:
@array = 'a'..'z' # é um array por causa do sigil da variável
Não tem parêntese algum aí, e mesmo assim tudo funciona perfeitamente,
por conta do que eu acabei de explicar.
More information about the SaoPaulo-pm
mailing list