आप आंशिक रूप से add
आवेदन किया है। यह करी से संबंधित है।
कुछ भाषाओं कि आंशिक आवेदन का समर्थन में, कार्यों डिफ़ॉल्ट रूप से curried कर रहे हैं। आप लिखने के कोड जैसे सक्षम हो सकते हैं:
increment = add(1)
println(increment(2))
# => 3
एक करीबी फ़ंक्शन आपको आंशिक रूप से उस फ़ंक्शन को सीधे लागू करने की अनुमति देता है। जावा अतिरिक्त मशीनरी के बिना उस तरह की चीज़ का समर्थन नहीं करता है।
संपादित करें:
जावा 8 में, lambdas के साथ और java.util.function
, आप एक करी समारोह को परिभाषित कर सकते हैं।
import java.util.function.Function;
public class Example {
public static <T, U, R> Function<T, Function<U, R>> curry(BiFunction<T, U, R> f) {
return t -> u -> f.apply(t, u);
}
public static int add(int x, int y) {
return x + y;
}
public static void main(String[] args) {
Function<Integer, Function<Integer, Integer>> curriedAdd = curry(Example::add);
// or
// BiFunction<Integer, Integer, Integer> add = (x, y) -> x + y;
// curriedAdd = curry(add);
Function<Integer, Integer> increment = curriedAdd.apply(1);
System.out.println(increment.apply(4));
}
}
संपादित करें # 2: मैं गलत था! मैंने अपना जवाब सही/संशोधित किया है। जैसा कि sepp2k ने बताया कि यह केवल आंशिक कार्य अनुप्रयोग है। दो अवधारणाएं संबंधित हैं और अक्सर उलझन में हैं। मेरी रक्षा में मिश्रण के बारे में विकिपीडिया पृष्ठ को घुमाने पर एक अनुभाग है।
मुझे पता नहीं क्या currying था, तो मैं उसे ढूंढने की थी। सोचा मैं [Currying] पर विकिपीडिया लेख का हिस्सा होगा (http://en.wikipedia.org/wiki/Currying) – Ascalonian
संबंधित पोस्ट: [? क्या जावा समर्थन Currying] (http://stackoverflow.com/questions/6134278/ करता है-जावा-support-currying) – Ascalonian