[Cascavel-pm] Parametros por referência

Eden Cardim edencardim em gmail.com
Segunda Julho 27 05:31:34 PDT 2009


2009/7/27 Giuliani Deon Sanches <giulianisanches em gmail.com>:
> @Edenc: Não entendi direito a questão de "invocação do método", pois
> eu faço isso no exemplo que passei. Na realidade aquela atribuição
> usada (@lista = rev @lista) esta ali somente porque foi dessa forma
> que funcionou. Inicialmente aquelas 3 linhas finais eram:
>
> my @lista = (1, 2, 3);
> rev @lista;
> print @lista, "\n";

isso é um método:

sub bar { $_[1] = 4 }

pra "rodar" o código do método, ele precisa ser "invocado" com argumentos:

bar(@foo);

A "passagem de argumentos" faz com que os valores (de @foo) apareçam
dentro do escopo do método. Existem algumas formas de se implementar
isso, Perl, em particular, implementa isso usando passagem por
referência, ou seja, o método obtém uma referência pros argumentos,
não os valores em si, por isso, se você alterar os valores usando a
referência (@_, no caso), vai modificar a variável original (que
existe fora do escopo de bar()).

-- 
   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