[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