Примечание: перейдите к "Вопросу" ниже, если вы просто хотите пропустить контекст
Когда вы беседуете о Scala, я почти всегда уверен, что меня спросят, но когда вы будете использовать Закрытие? "Обычно я говорю:" Подождите, пока я не покажу вам понимание", а затем я покажу, как можно понять, что для понимания можно использовать с помощью flatMap/map + closures.
Этот пример помогает, однако мне сложно объяснить общее "это когда вы узнаете, когда использовать закрытие". Это одна из тех вещей, которые вы "просто привыкли" в функциональном программировании, вы почти делаете это, не думая.
Обычно я разговариваю с разработчиками Java, когда говорю о Scala, и одна аналогия, которая приходит на ум, - "вы знаете, когда вы создаете анонимный внутренний класс, которому необходимо получить доступ к переменной где-то выше, где был определен класс" Как закрытие". Поэтому я использую обработку обратного вызова событий как один конкретный пример (так как вы неизбежно используете анонимные внутренние классы в этом сценарии).
Учитывая аудиторию (нет опыта или ограниченного опыта работы с FP), я не буду обсуждать такие термины, как Monads, эти люди обычно ищут конкретные/прагматические примеры, к которым они могут относиться.
Вопрос: У каждого есть свой способ успешного объяснения закрытий, которые действительно попадают домой для разработчиков Java (или других языков OO)?