Ein Beispiel für eine bekannte Schließung + Funktion höherer Ordnung in Schema (Zähler, [Wikipedia's Closure '](https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83% BC% E3% 82% B8% E3% 83% A3)), neu geschrieben in Python, wird als Memorandum bezeichnet.
Der Punkt ist, wenn Sie den Wert der enthaltenen externen Variablen im Funktionskörper neu schreiben möchten, ist es notwendig, sie als nicht lokal zu deklarieren?
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
Überprüfen Sie die Ausführung unter 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