Da ich jetzt seit 25 Jahren Software entwickle, gab es zu meiner Anfangszeit noch keine Closures.
Closures wird häufig als tolles Feature beschrieben, aber irgendwo bleibt mir der tiefere Sinn des Closures verborgen. Ich vermute, dass das vorrangig daran liegt, dass ich eine Erwartung an Closures habe, die ich nicht finde, weil ein Closure nur ein anderer Name für etwas ist, was ich kenne. Somit finde ich also nichts Neues.
Ist zufällig jemand da, der Closures kennt und verwendet und mir das etwas beschreiben kann?
(Im C++ Tutorial hantiere ich derzeit an den Operatoren und so komme ich wieder zu dieser Frage.
Gehe ich recht in der Annahme, dass ein Closure einem Functor entspricht, der als Singleton implementiert ist?)
Closures
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Closures
Laut Wiki ist das vergleichbar mit statischen Variablen in C ...
Also einfach "lokale Variablen", die nicht durch verlassen ihres Kontextes gelöscht werden...?
Also einfach "lokale Variablen", die nicht durch verlassen ihres Kontextes gelöscht werden...?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Closures
Was einem Functor-Singleton entspräche, sofern hierfür die Parameter in die Member kopiert werden.Dirty Oerti hat geschrieben:Laut Wiki ist das vergleichbar mit statischen Variablen in C ...
Also einfach "lokale Variablen", die nicht durch verlassen ihres Kontextes gelöscht werden...?
Ich weiß, was ich mit einem Functor-Singleton machen kann... aber ich finde das jetzt nicht so spannend, um dafür einen Begriff wie Closure zu hypen?
Was übersehe ich?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Closures
Soweit wie ich das gesehen habe, versucht man mit Closures die Nutzung von Variablen außerhalb ihres Scopes, also der versuch locale auf Halb-Globale Variablen Hochzupushen, eben Vergleich mit Statischen Variablen in C, eben nicht mit C++-Klassen.Was übersehe ich?
Mit deinem Functor-Singleton aber versuchst du Klassen und Funktionen bestimte Möglichkeiten einzuräumen, zumindest verstehe ich das so.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Closures
Beim Functor komme ich doch auch an die Variablen heran, die diese Instanz liefert.cloidnerux hat geschrieben:Soweit wie ich das gesehen habe, versucht man mit Closures die Nutzung von Variablen außerhalb ihres Scopes, also der versuch locale auf Halb-Globale Variablen Hochzupushen, eben Vergleich mit Statischen Variablen in C, eben nicht mit C++-Klassen.Was übersehe ich?
Mit deinem Functor-Singleton aber versuchst du Klassen und Funktionen bestimte Möglichkeiten einzuräumen, zumindest verstehe ich das so.
Wozu ist es sinnvoll, lokale Variablen von außen zu erreichen?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Closures
Auf den ersten Blick hat mich das irgendwie auch gewundert, aber nach ein paar Nachforschungen erscheint mir das eigentlich gar nicht so schlecht - zumindest so wie es im kommenden C++ Standard sein wird. Dabei werden als Closure jene Variablen bezeichnet die sich im Scope der Definition einer Lambda-Funktion befinden. Damit kann man dann zum Beispiel sehr leicht und übersichtlich Operationen auf einem Container durchführen:Xin hat geschrieben:Wozu ist es sinnvoll, lokale Variablen von außen zu erreichen?
Code: Alles auswählen
std::vector<int> someList;
int total = 0;
std::for_each(someList.begin(), someList.end(), [&total](int x) {
total += x;
});
std::cout << total;
Ich weiß nicht ob meine Erklärungen ganz klar und verständlich waren, aber es lohnt sich sicher in den Standard und auf Wikipedia das ganze noch einmal nachzulesen:
http://www.open-std.org/jtc1/sc22/wg21/ ... /n1968.pdf
http://www.open-std.org/jtc1/sc22/wg21/ ... /n2550.pdf
http://en.wikipedia.org/wiki/C%2B%2B0x# ... xpressions
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at