Currying,部分应用程序和功能分解是相同的概念吗?它们之间有什么区别吗?
我在阅读这些内容,发现它们相同。他们之间是否有任何区别,我不明白。
当您可以一次性将所有参数传递给单个方法时,为什么还要用Java编写这样的代码?
Function<Integer,Function<Integer,Function<Integer, Integer> > >
triadder = u -> w -> v -> u + w + v;
// Calling the curried functions
// Calling Curried Function for Adding u, v & w
System.out.println("Add 2, 3, 4 :"
+ triadder
.apply(2)
.apply(3)
.apply(4));
最佳答案
Java不太适合这种方法。其他语言使其更容易。在Java中,面向对象是必经之路,函数式编程思想仅在确实需要它的特定情况下才加分。
“部分application”是比currying更通用的概念。这意味着提供一个在其闭包中保存一些数据的函数-调用方提供另一个参数。
可以将其与Java对象“捕获”一个字段,然后提供使用该字段以及另一个参数的方法进行比较。
“ Curing”更具体地将多参数功能重构为一个参数的功能。通过捕获除一个参数外的所有参数,将其他参数留给以后的调用来完成。
“功能分解”是将复杂过程分解为简单功能的分析,这些功能等同于面向对象设计的功能编程。