closure
En d'autres termes
fermeture
Définition
Dans certains langages comme Lisp, Ruby ou Groovy, une "closure" (fermeture) est un bloc de code identifié comme un objet, et pouvant être réutilisé indépendamment du contexte lexical dans lequel il est déclaré, comme n'importe quelle variable dynamique. Ainsi, en Lisp
(defun make-counter-closure (initial-value) (let ((counter initial-value)) (lambda () (incf initial-value)))) (defvar *a-counter* (make-counter-closure 10)) (defvar *b-counter* (make-counter-closure 20)) (funcall *a-counter*) -> 11 (funcall *b-counter*) -> 21 (funcall *a-counter*) -> 12 (funcall *a-counter*) -> 13 (funcall *b-counter*) -> 22