【发布时间】:2019-04-07 15:03:56
【问题描述】:
我正在学习使用,
java.util.function.Function
我写了一段代码,它使用java函数给自己加4,
代码如下,
public class Test01 {
public static void main(String[] args) {
Function<Integer,Integer> addFunction = new Function<Integer,Integer>() {
private int total = 0;
public Integer apply(Integer value) {
this.total += value;
return this.total;
}
};
int finalTotal = addFunction.andThen(addFunction)
.andThen(addFunction)
.andThen(addFunction)
.apply(4);
System.out.println(finalTotal);
}
}
当我运行上面的代码时,我得到的输出是
32
我怎样才能实现我在 javaScript 中所做的事情,如下所示,
var fn19 = function(){
var addNum = function(num){
var fn = function(num2){
fn.sum += num2;
return fn;
};
fn.sum = num;
return fn;
};
print("addNum(3)(4)(3)(10) ==> "+addNum(3)(4)(3)(10).sum);
};
fn19();
上面代码的输出是
addNum(3)(4)(3)(10) ==> 20
我可以有相同类型的 java 函数调用吗?我可以在其中传递尽可能多的数字参数,并且 addFunction 将添加这些数字。
【问题讨论】:
-
不太容易,因为 Java 是一种类型化语言。为了能够访问一个字段,您需要定义一个实现
Function<...>的类型,但允许您访问该接口合同以外的其他内容。此外,您似乎在 Javascript 代码中使用了Function<Integer,Function<Integer>>的等价物,而不是Functyon<Integer,Integer>。 -
这和 RxJava 有什么关系?
标签: java java-8 functional-programming functional-java