[SP-pm] Closures

"Flávio R. Lopes" flavio.lopes at links.inf.br
Fri Jun 3 06:29:52 PDT 2011


Legal!...Obrigado Thiago.

On 03-06-2011 07:34, Thiago wrote:
> Pegando o exemplo do próprio intermediated Perl:
>
> use File::Find;
>
> my $callback;
> {
>   my $count = 0;
>   $callback = sub { print ++$count, ": $File::Find::name\n" };
> }
> find($callback, ".");
>
> Aqui, a variável $callback está no escopo de Main. Mas ela é usada 
> dentro de um bloco para referenciar uma sub. Se $callback não criasse 
> a referência para a sub a variável count desapareceria com o 
> fechamento do bloco. Você não pode acessar $count diretamente mas toda 
> vez que executar a sub em $callback $count será incrementada.
> Para que serve? Eh muito util para criar dados privados em objetos.
>
> mais sobre closures:
> http://www.manning-source.com/books/conway/conway_ch11.pdf
>
>
> On 03-06-2011 00:22, "Flávio R. Lopes" wrote:
>> Pessoal, desculpe aí, mas acho que achei a resposta nas Threads de 
>> 2007 da lista. Foi inclusive uma thread do Solli.
>> Mas se alguém quiser dar algum exemplo, please feel free....
>>
>> On 03-06-2011 00:12, "Flávio R. Lopes" wrote:
>>> Boa noite pessoal!
>>> Seguinte:
>>> Estou vendo no meu livro, dentro da parte que trata de Subrotinas 
>>> Anônimas, sobre Closures.
>>> Não sei se entendi direito, em Perl, o significa disto.
>>> Pelo que li, parece que é o acesso à uma variável, que está fora do 
>>> escopo (por exemplo dentro de um bloco), por uma sub que está fora 
>>> do escopo deste bloco de instruções, ou seja, a sub consegue 
>>> recuperar o valor desta variável que está dentro de um bloco, ou 
>>> seja, uma variável interna de um bloco que teoricamente não poderia 
>>> ser acessada.
>>>
>>> É isto mesmo?
>>> Se não for, alguém poderia de explicar?
>>>
>>> Abraço,
>>> Flávio
>>> =begin disclaimer
>>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>
>> =begin disclaimer
>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>
>



More information about the SaoPaulo-pm mailing list