Closure
Origem: Wikipédia, a enciclopédia livre.
Em ciência da computação e na programação uma closure é uma função que referencia variáveis livres no contexto léxico. Uma closure ocorre normalmente quando uma função é declarada dentro do corpo de outra, e a função interior referencia variáveis locais da função exterior em tempo de execução quando a função exterior é executada, então uma closure é formada. Ela consiste do código da função e referências para quaisquer variáveis no escopo da função exterior que a closure necessita.
[editar] Utilização
Os closures são utilizados para:
- Bibliotecas de software podem permitir que os usuários customizem o comportamento passando closures como argumentos às funções importantes. Por exemplo, uma função que classifique valores pode aceitar um argumento de closure que compare os valores a ser classificados de acordo com um critério definido pelo próprio usuário.
- As funções múltiplas podem ser produzidas num mesmo ambiente, permitindo-as de se comunicar confidencialmente.
[editar] Exemplos
function newCounter () { var i = 0 return function () { // anonymous function i = i + 1 return i } } c1 = newCounter() alert(c1()) alert(c1()) alert(c1()) alert(c1()) alert(c1())
>>> def foo(start=0): ... counter = [start] # counter is 1-element array ... def bar(): ... counter[0] = counter[0] + 1 ... return counter[0] ... return bar ... >>> count = foo(10) >>> print count() 11 >>> print count() 12
[editar] Na internet
- Foundations of Actor Semantics Will Clinger, MIT Mathematics Doctoral Dissertation. June 1981.
- Martin Fowler sobre Closure