[Cascavel-pm] Parametros por referência

Fernando Oliveira fernandocorrea em gmail.com
Segunda Julho 27 05:49:32 PDT 2009


fernando em fernando-laptop:~$ perl -e '
sub rev {
   @_ = reverse @_;
}

@lista = qw/1 2 3/;
print rev(@lista), $/;
'
321
fernando em fernando-laptop:~$


2009/7/27 Eden Cardim <edencardim em gmail.com>

> 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/
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>



-- 
Just another Perl Hacker,
Fernando (SmokeMachine)
http://perl-e.org
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20090727/14db24bb/attachment.html>


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