В Java я хочу определить нормализующую функцию, которая принимает одно число в качестве ввода, но поведение которого определяется несколькими параметрами.
По сути, эквивалент Java этого в Lisp:
(define (normalizeVal min max floor ceiling)
(lambda (x) (/ (* (- ceiling floor) (- x min)) (+ (- max min) floor))))
В псевдокоде я хотел бы:
function parsing(data, normalizeValFunc) {
for (datum in data):
normalizeValFunc(datum);
}
var input = userData;
var min, max, floor, ceiling = /* Calculate min, max, floor, and ceiling */
var output = parsing(input, normalizeValFunc(min, max, floor, ceiling));
Передача функций в качестве параметров в Java может быть сложной, поскольку функции не являются объектами первого класса в Java. (Может быть, выражения Java 8 Lambda меняют это?) Другие вопросы затрагивают проблему передачи функций в качестве параметров в Java, таких как Как передать функцию в качестве параметра в Java? Какая ближайшая замена указателя функции в Java? и Указатели функций в Java
Однако ни один из этих вопросов не касается передачи функции, поведение которой определяется параметрами, отличными от входного значения функции. Я не знаю заранее, каковы будут минимальные, максимальные, полные и потолочные параметры функции нормализации, но я хочу, чтобы только эффективная нормализующая функция принимала один аргумент, нормализуемое значение.