[Cascavel-pm] Parametros por referência

Eden Cardim edencardim em gmail.com
Domingo Julho 26 18:48:12 PDT 2009


2009/7/26 Giuliani Deon Sanches <giulianisanches em gmail.com>:
> Na página 25 do "Perl hard way" é afirma que os parâmetros passados
> para um método são "aliases" e que com isso eu posso alterar os
> valores passados e isso refletiria após a chamada do método.
>
> No exercício seguinte é sugerido a criação de um método que funcione
> como o reverse do perl, atuando sobre a lista de parâmetros passados.
> Após implementar o método, se eu fizer o seguinte:
>
> @lista = (1,2,3);
> rev @lista;
> print @lista;
>
> A saida é 1,2,3 (não muda), porém:
>
> @lista = rev @lista;
> print @lista;
>
> A saida é 3,2,1 como deveria.
>
> Eu estou entendendo o conceito de passagem por referência de forma
> errada ou fiz algo errado (http://pastebin.com/f574f651b) ?

Passagem por referência envolve uma invocação de método:

# uma lista com scopo léxico
my @foo = qw(1 2 3);

print @foo; # 123

# um método, fora do escopo de @foo
sub bar {
  $_[1] = 4
}

bar(@foo); # @foo é passado para bar() por referência e "aliased" como @_;

print @foo; # 143

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://edenc.vox.com/            http://www.shadowcat.co.uk/servers/


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