Ajaxer

Javascript punks

JavaScript als funktionale Programmiersprache – Teil 12 – Currying

| Keine Kommentare

Der Begriff Currying hat nichts mit der Gewürzmischung zu tun, sondern geht zurück auf den Mathematiker Haskell Curry, nach dem die Programmiersprache Haskell benannt ist.

Durch Currying lassen sich Parameter einer Funktion vorbefüllen. Die this- Variable bleibt vom Currying unberührt. Currying funktioniert, indem man eine neue Funktion aus einer bestehenden Funktion und einem vorzubefüllenden Parameter zusammensetzt. Dazu muss eine Curry-Methode üblicherweise im Prototyp des Funktionsobjekts implementiert werden.

An dieser Stelle folgt die Implementierung Douglas Crockford, da diese sicherlich die verbreitetste Currying-Implementierung ist. Allerdings musste sie angepasst werden, da die ursprüngliche Beispielimplementierung nicht in allen Umgebungen lauffähig ist.


Function.prototype.curry = function() {
  // get the slice method
  var slice = Array.prototype.slice, 
    // preserve ags array for closure 
    args = slice.apply(arguments), 
    // preserve this for closure
    that = this; 
  return function() {
    return that.apply(null, args.concat(slice.apply(arguments))); 
  };
};

Diese Currying-Funktion lässt sich nun einsetzen. Wir verwenden die plus-Funktion, die eigentlich zwei Parameter erwartet, und gehen davon aus, dass in unserem Anwendungsfall stets zu einem Basiswert hinzuaddiert werden soll.


var addToBase = plus.curry(100); print(addToBase(5)); // 105

In den letzten Blog-Posts haben Sie JavaScript als funktionale Programmiersprache kennengelernt. Sowohl die Deklaration als auch die Verwendung von Funktionen sollten bekannt sein. Scopes sollten verstanden worden sein, denn Scopes sind im Zusammenhang mit Closures wichtig. JavaScript ist jedoch nicht nur eine funktionale, sondern auch eine prototypische Programmiersprache. Daher wird im folgenden Kapitel im Buch (s.u.!) JavaScript als prototypische Programmiersprache behandelt.

Cover-klein in JavaScript als funktionale Programmiersprache - Teil 12 - Currying - AjaxerDies ist eine autorisierte Leseprobe aus dem Buch Oliver Ochs – JavaScript für Enterprise-Entwickler: Professionell programmieren im Browser und auf dem Server – dpunkt.verlag GmbH 2012.

Gesucht und gefunden durch:

  • javascript currying a function
  • javascript prototype funktional

Autor: Oliver Ochs

Oliver Ochs ist bei der Management- und IT-Unternehmensberatung Holisticon AG in Hamburg tätig. Er beschäftigte sich in den letzten Jahren mit Content Management Systemen, Webframeworks und Portalen auf Java-Basis. In diesem Umfeld arbeitete er als Entwickler, Architekt und Projektleiter. Er hat darüber hinaus Erfahrungen in Schulungen und Coachings. In letzter Zeit setzte er einen seiner Schwerpunkte auch auf Web- Application-Security, Identity-Management und neue Seiten von JavaScript. Ein anderer persönlicher Schwerpunkt sind agile Methoden und Prozesse

Schreib einen Kommentar

Pflichtfelder sind mit * markiert.