Úvodní stránka | Tato stránka v originále

Uzavření (informatika)

V programovacích jazycích, uzavření abstrakce reprezentuje funkciplus lexikální prostředí (viz scoping statické elektřiny) ve kterém funkce byla vytvořena.

Uzavření jsou typicky splnil s specialitou datová struktura to obsahuje ukazatel na operační znak plus reprezentaci funkčního lexikálního prostředí (tj. soubor dostupných proměnných a jejich hodnot) v době když uzavření bylo vytvořeno.

Uzavření typicky se objevit v jazycích, které dovolí funkcím být “prvotřídní” hodnoty -- - jinými slovy, takové jazyky dovolí funkcím být vypadal jako argumenty, se vrátil z hovorů funkce, skákat ke jménům proměnné, etc., úplně jako jednodušší typy takový jako řetězce a celá čísla.

Například, v ML, dodržování kodexu určí funkci f to vrátí jeho argumentu plus 1:

legrace f (x) = x + 1;
Takový funkce může “snímací” jméno/cenit vázání od jeho přikládat prostředí, produkovat uzavření. Například, v kódovém fragmentu:
val x = 1; legrace f (y) = x + y;
uzavření datová struktura reprezentovat f obsahuje ukazatel k přikládat prostředí, ve kterém x je svázán k 1. Proto, f vždy vrátí jeho argumentu plus 1, dokonce jestliže životní prostředí ve kterém to je aplikováno má různou hodnotu pro x. Proto, zvažovat fragment kódu:
nechal val x = 1; legrace f (y) = x + y; v nechaném val x = 2; v f (3) konec konce
V tomto kódu, hovor f(3) se vyskytuje v prostředí (inner nechaný) kde x je svázán k 2. Nicméně, uzavření pro f byl postaven v prostředí (vnější nechaný) kde x je svázán k 1. Proto výsledek hovoru f(3) je 4, ne 5.

Uzavření mají mnoho použití:

Poznámka: Některé reproduktory volají nějakou datovou strukturu, která sváže lexikální prostředí uzavření, ale termín obvykle odkazuje specificky k funkcím.

Schéma bylo první programovací jazyk mít úplně obecné, lexically scoped uzavření. Doslova všechny funkční programovací jazyky, také jak Smalltalk- pocházející objektově orientované programování jazyky, podporovat nějakou formu uzavření. Některé prominentní jazyky, které podporují uzavření obsahují:

Některé objektově orientované jazyky umožní programátorovi používat objekty, aby simuloval některé rysy uzavření. Například:Viz též: