LINUX.ORG.RU

История изменений

Исправление drBatty, (текущая версия) :

Получается просто, что процедура использует глобальные переменные, ничего примечательного тут вроде и нет.

в ФП есть — это быдлокод называется.

На самом деле, замыкание, это связь функции с переменной из другого контекста. Вот пример из вики:

def counter():
    x = 0
    def increment(y):
        nonlocal x
        x += y
        print(x)
    return increment

эта функция возвращает замыкание из другой функции(increment()) и переменной x. Т.е. замыкание это такой хитрый объект, который является функцией с какими-то переменными, но эти переменные не являются локальными для функции.

В классических ЯП замыканий быть не может, т.к. нет нормальных объектов-функций. Имитации/костыли из C++11 не совсем то, хотя и работает.

Исходная версия drBatty, :

Получается просто, что процедура использует глобальные переменные, ничего примечательного тут вроде и нет.

в ФП есть — это быдлокод называется.

На самом деле, замыкание, это связь функции с переменной из другого контекста. Вот пример из вики:

def counter():
    x = 0
    def increment(y):
        nonlocal x
        x += y
        print(x)
    return increment

эта функция возвращает замыкание из другой функции(increment()) и переменной x. Т.е. замыкание это такой хитрый объект, который является функцией с какими-то переменными, но эти переменные не являются локальными для функции.

В классических ЯП замыканий быть не может, т.к. нет нормальных объектов-функций. Имитации/костыли из C++11 не совсем то, хотя и работает.