2014-11-23 8 views
6

In Verbindung mit Verschlüssen ich oft gelesen, dass etwas über etwas anderes als ein Mittel Schließung erklären schließt.Was genau bedeutet "Closing over"?

Jetzt habe ich keine großen Schwierigkeiten, die Schließungen zu verstehen, aber "Closing over" scheint ein grundlegenderes Konzept zu sein. Sonst würde man sich nicht darauf beziehen, Schließungen zu erklären, würde man?

Was ist die genaue Definition von Schließung über, und was ist der etwas und die etwas anderes? Woher kommt der Begriff?

+1

bedeutet in der Regel "Elemente zu einem Satz hinzufügen und dann * einige mehr *" - der * so mehr * Teil sollte sicherstellen, dass die Eigenschaften des Satzes gültig bleiben - in diesem Fall sind es die Umgebungen, in denen Sie Ihre Werte erhalten von - Sie fügen die ein, und alles, was Sie für sie brauchen, verwenden Sie innerhalb des Lambda - das ist die Schließung – Carsten

Antwort

8

Bedenken Sie:

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

hier:

  1. Gegenstand der Verschluss ist. Eine Schließung ist eine Funktion.
  2. Die Schließung “ schließt über ” (wie in umschließt) die Menge seiner freien Variablen.
  3. Das Objekt ist die Menge der freien Variablen des Abschlusses.

Betrachten wir eine einfache Funktion:

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

hier:

  1. Die Funktion add genannt hat nur eine Variable mit dem Namen x, die nicht eine freie Variable ist, weil es in der definiert ist, Umfang von add selbst.
  2. Die Funktion closure hat zwei Variablen namens, genannt x und y, aus denen x eine freie Variable ist, da sie in den Umfang der add (nicht closure) und y ist keine freie Variable definiert ist, weil es in der definiert ist, Umfang von closure selbst.

Daher wird in dem zweiten Fall ist die Funktion mit dem Namen closure soll “ dicht über die variablen ” x benannt.

Deshalb:

  1. Die Funktion namens closure gesagt wird ein Verschluss der variablen x genannt werden.
  2. Die Variable mit dem Namen x soll ein Upvalue der Funktion namens closure sein.

Das ist alles, was es ist.

+2

(1) All dies könnte in wenigen Worten gesagt werden: * "A schließt über B" == " B ist eine freie Variable von A ", wobei freie Variablen diejenigen sind, die im Körper einer Funktion vorkommen, aber nicht in ihrer Signatur. * (2) Die Antwort gibt keine Intuition darüber, was zu visualisieren ist und warum der Begriff" sich schließt " "Schließung") wurde gewählt. Liegt es an der Semantik (kommt etwas nahe? Oder kommt etwas näher?) Oder wurde das Wort gewählt, um Diskussionen tiefer und geheimnisvoller zu machen? –

+0

Fühlen Sie sich frei, Ihre eigene Antwort zu schreiben. –