Java是否支持Currying?

我想知道是否有任何方法可以在Java中实现。我认为,如果没有本地对闭包的支持,这是不可能的。

回答:

Java 8(2014年3月18日发布)不支持curring。可以将Missingfaktor在答案中发布的示例Java代码重写为:

import java.util.function.*;

import static java.lang.System.out;

// Tested with JDK 1.8.0-ea-b75

public class CurryingAndPartialFunctionApplication

{

public static void main(String[] args)

{

IntBinaryOperator simpleAdd = (a, b) -> a + b;

IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b;

// Demonstrating simple add:

out.println(simpleAdd.applyAsInt(4, 5));

// Demonstrating curried add:

out.println(curriedAdd.apply(4).applyAsInt(5));

// Curried version lets you perform partial application:

IntUnaryOperator adder5 = curriedAdd.apply(5);

out.println(adder5.applyAsInt(4));

out.println(adder5.applyAsInt(6));

}

}

…这是非常好的。就个人而言,有了Java 8,我几乎没有理由使用替代的JVM语言(例如Scala或Clojure)。当然,它们提供了其他语言功能,但这不足以证明过渡成本和IDE /工具/库支持IMO的不足。

以上是 Java是否支持Currying? 的全部内容, 来源链接: utcz.com/qa/397903.html

回到顶部