Закрытие представляет собой внешнюю функцию O, которая в своем теле имеет переменную x и внутреннюю функцию F. F должен получить доступ к x. O должен возвращать F, то есть сам F (или его указатель), а не возвращаемое значение F. Таким образом, поскольку F можно вызывать из кода вне O, а F нужно выполнить x, x следует сохранить в области после Вывода.Можем ли мы иметь закрытие без внутренних функций?
В javascript мы можем определять функции внутри функций так, чтобы они были прямолинейными. В C# мы должны использовать анонимные методы или анонимные делегаты для того же поведения, что и внутренние функции.
Сущность замыкания заключается в сохранении значений локальных переменных функции после выхода функции, так что в следующий раз, когда функция вызывается, предыдущие значения уже присутствуют. Вышеупомянутый синтаксис и методы - это способы выполнения замыканий.
В любом случае, на любом языке (кроме языка ассемблера) есть сущность замыканий без использования внутренней функции или делегата. Поле Ofcourse в классах в ООП имеет тот же эффект, но я ищу способы, кроме этого.
Классы - это закрытие бедных людей, закрытие классов бедного человека :) Единственная изменяющаяся деталь - это то, как вы реализуете хранилище резервных копий. – leppie