Обсуждение:Замыкание (программирование)

message: NB. Перенёс все примеры кроме одного (наиболее «классического») в Викиучебник, где им и место, чтобы здесь не разводить свалку. РоманСузи 16:52, 8 января 2015 (UTC)
thread_title:  Про примеры 

message: А что в этом хорошего, почему это круто и зачем это надо ? Как это правильно использовать? Nbr 12:42, 3 декабря 2006 (UTC)
replies: text: Пример. Есть функция-итератор, которая, например, обходит дерево и делает над каждой веткой заданную операцию. Эта операция задается путем передачи ее в качестве одного из параметров итератора. (Например, в C# это делается через делегат, в C++ - указатель на функцию и т.д.) Мы хотим, чтобы она поработала (обошла дерево) с нашей операцией из одной-двух строчек. Без замыкания пришлось бы эту операцию описывать где-то в другом месте как обычную функцию, называть её именем и передавать это имя в параметрах итератора. А с замыканием можно наши две строчки написать прямо в месте вызова итератора, что есть гораздо логичнее и читабельнее. --М. Ю. (yms) 14:07, 3 декабря 2006 (UTC)
replies: text: :Похоже, М. Ю. (yms) описал не преимущества замыканий, а преимущества анонимных функций перед неанонимными. А поддержка языком программирования замыканий просто позволяет обращаться к внешним переменным из функции, передаваемой как объект (когда это нужно). --Bosik GN (обс.) 17:00, 21 февраля 2018 (UTC)
replies: text: :: Хаха, получил привет из 2006 года. Конечно, тот ответ был весьма невнятным, в нем не хватало главного, но замыкание используется именно для функции, определяемой внутри другой функции. --М. Ю. (yms) (обс.) 17:10, 21 февраля 2018 (UTC)
thread_title:  А что в этом хорошего 

message: В Java так же реализовано замыкание классов :)
Про замыкание функций - зачем акцентировать внимание на то, что метод из анонимного класса имеет доступ к переменным с модификатором final? Или он имеет доступ только к этим переменным?
replies: text: Да --212.92.145.1 10:12, 4 ноября 2007 (UTC)
thread_title:  О Java 

message: Авторам статьи к изучению Википедия:Правила и указания#Язык и стиль  81.9.62.62 21:08, 12 марта 2009 (UTC)
replies: text: Торагой, ну исправили бы! А то Вы только скромно указали нам наше место. 217.77.223.140 22:11, 11 октября 2009 (UTC)
replies: text: :Как вы представляете исправление тех частей статьи, в которых человек не разбирается? (языки программирования, отличные от тех, которые он знает). Логично, чтобы ненаучный стиль исправили те, кто писал эту статью или же другие знающие люди. --Irker 09:53, 24 октября 2009 (UTC)
thread_title:  Не научный стиль 

message: 1. В приведённом сэмпл-коде есть комментарий: 
// Имеет доступ к приватным членам содержащего класса:
Создаётся впечатление, что к остальным полям класса-контейнера нет доступа.
И, у класса в Java - члены или поля? Желательно стандартизовать терминологию, хотя бы в рамках этой статьи.
2. Для анонимного класса Thread реализован метод run(), а вызывается - метод start(). Arcadius 11:29, 8 мая 2010 (UTC)
Все правильно. Используется шаблонный метод. Метод start() уже определен для класса Thread и он вызывает метод run(), который пользователь обязан определить сам. Об этом не стоит вспоминать здесь -это только будет мешать пониманию самой статьи. Кому интересно - разберется сам. Msangel 01:25, 27 декабря 2010 (UTC)
thread_title:  Ещё о Java 

message: Замыкания будут поддерживаться в новом стандарте C++. Пока утверждён только черновик спецификации, так что синтаксис и требования в окончательной редакции стандарта могут измениться. Стоит ли написать об этом и привести работающие в GCC/MSVS примеры для C++ 0x?
cpp 20:08, 16 января 2011 (UTC)
replies: text: : Существующий пример не является замыканием. К тому же C++11 поддерживает замыкания довольно ограниченно. Внёс в статью. 85.141.173.75 11:01, 27 июня 2012 (UTC)
thread_title:  О C++ 0x 

message: struct Inc
{
  Inc(int dx = 1){this->dx = dx;}
  int operator()(int x){return x + dx;}
private:
  int dx;
};
int main(int argc, char* argv[])
{
  Inc inc, inc5(5);
  cout << inc(4) << endl << inc5(3); // результат: 5 8 
  cin.get();
  return 0;
}
Чем не замыкание?
thread_title:   C++ замыкание с использованием перегрузки оператора: "()" 

message: const res = add(1)(4)(8)(8);
Почему были выбраны именно эти константы? Обязательно ли их использование в примерах? Похоже, что их использовали в других областях и следует придумать другую, менее частную иллюстрацию замыканий. https://en.wikipedia.org/wiki/Fourteen_Words
 109.173.10.234 08:42, 19 ноября 2018 (UTC)
thread_title:  add(1)(4)(8)(8)