[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