miku: Closures Verständnis

Hi zusammen,

ich verstehe nicht ganz was Closures eigentlich sind. In Java sind diese ja nicht möglich, dagegen aber z.B. in Groovy oder ähnlichem.

Kann mir jemand (evtl. auch anhand eines einfachen Beispiels) zeigen was man mit Closures machen kann? Aus den Beispielen aus Dokus bin ich bis jetzt noch nicht ganz schlau geworden.

Ich meine mal gehört zu haben dass es mit Closures möglich ist Variablen über ihren eigentlichen Gültigkeitsbereich hinaus zu nutzen.

Kann mir da jemand etwas auf die Sprünge helfen?

Danke und Grüße

  1. Hallo miku,

    Closures sind referenierbare Funktionen bzw. Methoden aus denen auf den Kontext zugegriffen werden kann, in dem sie deklariert werden.

    Ein Beispiel aus Javascript:

      
    function createCounter() {  
      var count = 0;  
      return function() {  
        return ++count;  
      };  
    }  
    var c1 = createCounter();  
    var c2 = createCounter();  
    alert(c1());  
    alert(c1());  
    alert(c2());  
    alert(c1());  
    alert(c2());  
    
    

    In Java gibt es annonyme Klassen, mit denen man etwas ähnliches erreichen kann. Vermutlich sind die Closures in Grovy und anderen Sprachen, die auf der JVM aufsetzen, auf diese Weise implementiert.

    Grüße

    Daniel

  2. Hi,

    Kann mir da jemand etwas auf die Sprünge helfen?

    Dieser Self-Artikel ist sehr lesenswert: Organisation von JavaScripten

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
  3. Danke euch an euch zwei für Erklärungen und den Link, werde ich mir mal genauer durchlesen.

    Grüße