我想编写折叠函数,例如“((事件,状态)->状态”)。如果在Java中没有任何模式匹配且不可变的话我该怎么写?
答案 0 :(得分:0)
我认为您正在寻找Java中的 功能编程 。
Lambda Expressions是JAVA 8中的新语言功能,已在此版本中引入。它们使您可以将功能视为方法参数,或将代码视为数据。 Lambda表达式使您可以更紧凑地表示单方法接口(称为功能接口)的实例。
在此处了解更多信息,https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#approach5
答案 1 :(得分:0)
Java 8+允许您执行此操作的一种方式是使用BiFunction
。例如:
public BiFunction<Event, State, State> biFunctionMethod(){
return (event, state) -> {
Object obj = doSomethingWithEventAndOldState(event, state);
return new State(obj); // not changing the old state
};
}
然后您将其称为:
public void run(){
State newState = biFunctionMethod().apply(event, state);
}