Друзья, помогите новичку. Пытаюсь решить такую задачу:
Есть два типа функций: number() и operator(), нужно сделать так, чтобы пользователь функций мог их использовать так:
number(operator(number())) и в результате получать корректное вычисление, пример:
Пользователь пишет one(plus(one()) в результате получает 2 (задача изначально для реализации на питоне, питона не знаю - я захотел потренироваться и реализовать ее на яве).
Единственное общее решение, которое возникло у меня в голове:
Функция типа operator(int... num) принимает 1 или 2 параметра. Если параметр 1, то возвращает значение этого параметра (num[0]). Если параметров 2, то возвращает результат вычислений operator(num[0], num[1])
функции типа number(int... op) принимают 0 или 1 параметр, если параметров 0, то просто возвращает число соответствующее number, если параметр присутствует, то делает как-то так:
int tmp = op;
return op(number, tmp);
Понимаю, что решение скорее всего херовое. Для реализации на Яве решил, что мне нужны лямбды (когда-то вполне просто юзал лямбды на пхп в качестве самообразования, серьезно не кодил). Читаю Хорстмана, слова понятны, как юзать лямбды - нет.
Собственно чем можете помочь:
1. Имеет ли изложенное общее решение задачи хоть какой-то смысл?
2. Если да, объясните на пальцах, как на Яве это можно реализовать функционально (прочитал пару статей, но там пока для меня все страшно - лямбды через коллекции и дженерики, у Хорстмана в книжке лямбды идут до них).
3. Предложите лучшую реализацию, если можете.