Лямбда для DoubleFunction - PullRequest
       1

Лямбда для DoubleFunction

2 голосов
/ 23 октября 2019

Следующий фрагмент из https://blogs.oracle.com/javamagazine/quiz-yourself-functional-interfaces-advanced?source=:em:nw:mt::RC_WWMK190726P00001:NSL400004372

DoubleStream ds = DoubleStream.of(1.0, 2.0, 3.0);
DoubleFunction<DoubleUnaryOperator> fun = a -> d -> d + a;
System.out.print(ds.map(fun.apply(1.0)).sum());

При изучении лямбд я понимаю такие вещи, как d -> d+a или даже (d, a) -> d+aно, зная влияние этой функции, я не могу понять синтаксис вышеприведенной лямбды. Может кто-нибудь объяснить или дать ссылку на какой-нибудь учебник? Спасибо.

1 Ответ

6 голосов
/ 23 октября 2019
a -> d -> d + a;

совпадает с

a -> (d -> d + a);

, которая является функцией, которая для двойного a возвращает функцию, которая для двойного d возвращает сумму a и d.

Подробнее о частичном применении функций или превращении функции с несколькими аргументами в функции с несколькими аргументами см. curry .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...