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: [email protected]
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: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
--
_____________________________________________________________
Thiago Glauco Sanchez
ITIL
CIW Perl Specialist
Linux+
Téc. Eletrônica, Telecomunicações e Automação Industrial
Tecnologo em Gestão de Tecnologia da Informação
_____________________________________________________________
=begin disclaimer
Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer