Sulund (informaatika)

Sulund on informaatikas avaldis (harilikult funktsioon), millel võib olla vabu muutujaid koos keskkonnaga, mis neid seob ("sulgub" ümber nende muutujate).

Mõnikord nimetatakse sulunditeks ka lihtsalt anonüümseid funktsioone.

Sulundeid kasutades saab objektorienteeritud programmeerimiseks implementeerida objekte ja klasse.

Näited

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

Programmeerimine