Sulund (informaatika)
Ilme
Sulund on informaatikas avaldis (harilikult funktsioon), millel võib olla vabu muutujaid koos keskkonnaga, mis neid seob ("sulgub" ümber nende muutujate).[1]
Mõnikord nimetatakse sulunditeks ka lihtsalt anonüümseid funktsioone.[2]
Sulundeid kasutades saab objektorienteeritud programmeerimiseks implementeerida objekte ja klasse.[3]
Näited
[muuda | muuda lähteteksti]Näiteks defineerime programmeerimiskeeles Scheme kõrgemat järku funktsiooni make-counter
, mis tagastab loenduri: funktsiooni, mis suurendab igal väljakutsel tema loomise kontekstis nähtavat muutujat count
ühe võrra ja tagastab saadud väärtuse:
(define make-counter () (let ((count 0)) (lambda () (set! cnt (+ count 1)))))
Seejärel loome make-counter
abil kaks loendurit:
(define counter-a (make-counter)) (define counter-b (make-counter))
Võime hakata kumbagi funktsiooni välja kutsuma ja näeme, et kummagi loendur suureneb omaette:
(counter-a) ;; --> 1 (counter-a) ;; --> 2 (counter-a) ;; --> 3 (counter-b) ;; --> 1 (counter-b) ;; --> 2 (counter-b) ;; --> 3 (counter-a) ;; --> 4 (counter-a) ;; --> 5 (counter-a) ;; --> 6 (counter-b) ;; --> 4
Viited
[muuda | muuda lähteteksti]- ↑ Richard Cornford. "Javascript Closures". Notes on the comp.lang.javascript FAQ.
- ↑ "Anonymous functions". PHP Manual.
- ↑ Kurt Nørmark. "Classes and objects in Scheme". Functional Programming in Scheme.[alaline kõdulink]