在Java参数定义的操作,我想定义归一化函数,它一个数字作为输入,但其行为是由多个参数定义。通功能在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中参数的问题,如How to pass a function as a parameter in Java?,What's the nearest substitute for a function pointer in Java?和Function Pointers in Java
然而,这些问题涉及通过其行为被定义的函数参数不是函数的输入值。事先并不知道归一化函数的min,max,floor和ceiling参数是什么,但我只希望有效的归一化函数采用一个参数,将该值归一化。
看看番石榴功能https://code.google.com/p/guava-libraries/wiki/FunctionalExplained – keuleJ
很好的参考。如果我有足够的声望,会赞成你。 –
你需要关闭。 Lambdas使它变得简单,但不幸的是,匿名类路由是Java 8之前的唯一途径。请参见[this](http://stackoverflow.com/questions/5443510/closure-in-java-7),[this]( http://stackoverflow.com/questions/233579/closures-in-java-7)等 – nawfal