[Cascavel-pm] Parametros por referência

Daniel de Oliveira Mantovani daniel.oliveira.mantovani em gmail.com
Domingo Julho 26 19:07:13 PDT 2009


2009/7/26 Eden Cardim <edencardim em gmail.com>:
> 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.
>>

É porque sua função retorna um resultado, se você faz:

rev @lista;
print @lista;

Você não está mudando o @lista, e sim trabalhando com os valores contidos nele,
agora quando você faz:

@lista = rev @lista;

Você trabalha com os valores de @lista, recebe um valor e atribui em
@lista, você poderia fazer algo como:

my @pijama = rev @lista;
print @pijama; #321

Sua função simplesmente recebe um valor e trabalha com ele retornando
outro valor, que pode ser armazenado, no caso eu armazenei em @pijama.

Entendeu ?

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



-- 
"Deus usa os loucos pra confundir os sábios"
http://mantovanihouse.blogspot.com/
This is my poney:
-------(\_------------_/)-----------
-------)--(----------)--(-----------
------(----(---------)----)----------
-------)----(-------)----(-----------
-------(----(-------)----)-----------
--------\_-(\\.---.//)-_/------------
----------\)' -8--8- '(/--------------
-----------/------------\---------------
----------(--)--------(--)--------------
------------(_c__c_)----------------
----------------------------------------
perl -MLWP::Simple -le 'grep{ print $1 if
/href="(http.+?)"/}split($/,get("http://www.perl.org.br"))'


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