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: [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
=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