Un exemple de fermeture familière + fonction d'ordre supérieur dans Scheme (compteur, [Wikipedia's Closure '](https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83% BC% E3% 82% B8% E3% 83% A3)) réécrit en Python est décrit comme un mémorandum.
Le fait est que si vous souhaitez réécrire la valeur de la variable externe incluse dans le corps de la fonction, est-il nécessaire de la déclarer comme non locale?
counter.py
>>> def new_counter(c):
... def retfunc():
... nonlocal c
... c += 1
... return (c)
... return (retfunc)
...
>>> c1 = new_counter(10)
>>> c1()
11
>>> c1()
12
>>> c1()
13
Vérifiez l'exécution sur Gauche.
counter.scm
gosh> (define new_counter
(lambda (c)
(lambda () (set! c (+ c 1)))))
new_counter
gosh> (define c1 (new_counter 10))
c1
gosh> (c1)
11
gosh> (c1)
12
gosh> (c1)
13
Recommended Posts