Sulund (informaatika)

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

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

  1. Richard Cornford. "Javascript Closures". Notes on the comp.lang.javascript FAQ. Originaali arhiivikoopia seisuga 10. aprill 2010. Vaadatud 6. aprillil 2010.
  2. "Anonymous functions". PHP Manual.
  3. Kurt Nørmark. "Classes and objects in Scheme". Functional Programming in Scheme.[alaline kõdulink]