Замикання (програмування)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

В програмуванні, замиканням (англ. closure) називається підпрограма, що виконується в середовищі, що містить одну або більше зв'язаних змінних. Під час виконання, підпрограма має доступ до цих змінних.

Застосування замикань асоціюється з функціональним програмуванням, та з такими мовами програмування як ML та Лісп. Такі конструкції, як об'єкти в інших мовах програмування, можуть моделюватись із допомогою замикань.

В деяких мовах програмування замикання створюється для підпрограм, що визначаються всередині інших підпрограм, і внутрішня підпрограма має доступ до локальних змінних зовнішньої підпрограми. Під час виконання, коли обчислюється зовнішня підпрограма, утворюється замикання, до якого потрапляє код внутрішньої підпрограми, та посилання на ті змінні зовнішньої підпрограми, що використовуються у внутрішній підпрограмі.

Концепцію замикань було повністю розроблено в 1960-ті роки та реалізовано як особливість мови програмування Scheme. Відтоді було розроблено багато мов програмування з підтримкою замикань.

Приклад реалізації на Lua[ред.ред. код]

 function addfunc(x)
                             -- Повертає нову функцію без назви, яка додає x до аргументу 
  return function(y)
                             -- Коли ми будемо зсилатися на змінну x, що знаходиться поза даною областю й існування якої менше ніж даної  безіменної функції, Lua створить замикання                 
    return x + y
  end
end
num_plus = addfunc(2)
print(num_plus(5))           -- В результаті буде виведено 7