2014-11-23 44 views
6

In concomitanza con chiusure Leggo spesso che qualcosachiude oltre qualcos'altro come mezzo per spiegare le chiusure.Che cosa significa esattamente "chiusura"?

Ora non ho molta difficoltà a capire chiusure, ma "chiudere" sembra essere un concetto più fondamentale. Altrimenti non ci si riferirebbe ad esso per spiegare chiusure, sarebbe?

Qual è la definizione esatta del chiusura sopra, e qual è il qualcosa e la qualcos'altro? Da dove viene il termine?

+1

in genere significa "aggiungere elementi di aggiunta a un set e quindi * un po 'di più *" - la parte * così più * deve assicurarsi che le proprietà del set rimangano valide - in questo caso sono gli ambienti a ottenere i valori da - aggiungi quelli, e tutto ciò che potresti aver bisogno per loro, stai usando all'interno del lambda - questa è la chiusura – Carsten

risposta

8

considerare:

something closes over something else 
|_______| |_________| |____________| 
    |   |    | 
subject  verb  object 

Qui:

  1. Il soggetto è la chiusura. Una chiusura è una funzione.
  2. La chiusura “ chiude su ” (come in allegato) l'insieme delle sue variabili libere.
  3. L'oggetto è l'insieme delle variabili libere della chiusura.

consideri una semplice funzione:

function add(x) { 
    return function closure(y) { 
     return x + y; 
    }; 
} 

Qui:

  1. La funzione indicata add ha una sola variabile, chiamata x, che non è una variabile libera perché è definito all'interno del ambito di add stesso.
  2. La funzione indicata closure ha due variabili, denominate x e y, di cui x è una variabile libera poiché è determinato nell'ambito di add (non closure) e y non è una variabile libera poiché è determinato nel ambito di closure stesso.

Quindi, nel secondo caso la funzione denominata closure si dice “ chiudere sopra ” variabile denominata x.

Pertanto:

  1. La funzione indicata closure si dice che sia una chiusura della variabile denominata x.
  2. La variabile denominata x è considerata un valore superiore della funzione denominata closure.

Questo è tutto quello che c'è da fare.

+2

(1) Tutto ciò potrebbe essere detto in poche parole: * "A chiude su B" == " B è una variabile libera di A ", dove le variabili libere sono quelle che appaiono nel corpo di una funzione, ma non nella sua firma. * (2) La risposta non dà intuizione su cosa visualizzare e perché il termine" si chiude "(e "chiusura") è stato scelto. È dovuto alla semantica (qualcosa si avvicina o qualcosa si sta avvicinando?) Oppure la parola scelta per rendere le discussioni più profonde e misteriose? –

+0

Sentiti libero di scrivere la tua risposta. –

Problemi correlati