Выражения Java Lambda

Лямбда-выражения добавляются в Java 8. Я хочу понять, почему это важно. Что это значит для Java-программиста, который еще не знаком с идиомами функционального программирования? Означает ли это, что я могу писать код, который работает лучше или значительно масштабируется, или это только делает код менее подробным? Или все это.


person The_301    schedule 31.05.2013    source источник
comment
Я прошел курс по организации языков программирования, и мой профессор сказал мне, что вы можете сделать свой код ленивым. Вы тоже, я до сих пор не понимаю этого, можете добраться до вершины горы? Но на самом деле, это чертовски смутило меня, не могу дождаться, чтобы увидеть ответы.   -  person    schedule 31.05.2013
comment
Хм, одно из применений, которое я вижу, это выбор и создание функций во время выполнения. Предположим, вы что-то делаете с объектом, и в зависимости от того, что вы сделали, вам нужно передать его одному из 100 методов или одному методу со 100 ifs, с лямбда-выражениями вы можете написать один метод на лету без ifs.   -  person arynaq    schedule 31.05.2013
comment
E=hc/λ !!! Давай мужик!!   -  person Tdorno    schedule 31.05.2013
comment
Вы можете прочитать ответ Мориса Нафталинга в Почему лямбда-выражения добавляется в Java. Или вы можете прочитать ответ Марка Рейнхольда в его статье Замыкания для Java. Марк также написал в своем блоге Вопросы и ответы по замыканиям, которые, похоже, отвечают на некоторые из ваших вопросов. В JavaWorld есть даже интересная статья о Понимание Завершающие дебаты.   -  person Edwin Dalorzo    schedule 31.05.2013
comment
Это может помочь вам. javaattop.blogspot.in/2013/09/lambda-expressions- in-java.html   -  person Chandra Sekhar    schedule 09.09.2013
comment
Если вы новичок в Java 8, я рекомендую Caveofprogramming.com/java/   -  person VeKe    schedule 16.07.2015
comment
interface Lambda { Object run(Object... params); } затем Lambda adder = (params -> (Integer) params[0] + 1); P.println(adder.run(2));   -  person Ryan Cocuzzo    schedule 07.12.2020


Ответы (1)


У Oracle уже есть руководство по этой теме. В нем перечислены несколько замечательных вариантов использования.

Прежде чем я нашел ссылку, я собирался сказать, что лямбда-выражения позволяют передавать «функции» в код. Таким образом, вы можете легче писать код, для которого раньше нам требовался целый беспорядок интерфейсов/абстрактных классов. Например, предположим, что у вас есть код со сложной циклической/условной логикой или рабочим процессом. На одном этапе вы хотите сделать что-то другое. С лямбда-выражениями вы можете просто передать это «что-то другое». Прочтите учебник, хотя. Это очень ясно.

person Jeanne Boyarsky    schedule 31.05.2013
comment
Я немного запутался, потому что вы использовали фразу - * Прежде чем я нашел ссылку, я собирался сказать, что *. Итак, после того, как вы нашли ссылку на Oracle, ваше мнение/мысль изменилось? Я имею в виду, что вы думали неправильно или меньше, и после прочтения этой ссылки вы поняли, что это нечто большее. Причина, по которой я спрашиваю, заключается в том, что для меня то, что упоминалось ранее, было правильным и сутью этой ссылки, поэтому я хочу знать, не осознал ли я весь потенциал лямбда-выражений. - person hagrawal; 29.04.2017
comment
Я имел в виду, что это мой язык. Учебник формулирует это лучше - person Jeanne Boyarsky; 04.05.2017