मैं पाइथन से आ रहा हूं, और यह समझने की कोशिश कर रहा हूं कि लैम्ब्डा अभिव्यक्ति जावा में अलग-अलग कैसे काम करती है। पायथन में, आप इस तरह की चीजें कर सकते हैं:जावा में लैम्ब्डा अभिव्यक्तियों को कैसे मानचित्र करें
opdict = { "+":lambda a,b: a+b, "-": lambda a,b: a-b,
"*": lambda a,b: a*b, "/": lambda a,b: a/b }
sum = opdict["+"](5,4)
मैं जावा में कुछ कैसे पूरा कर सकता हूं? मैंने जावा लैम्ब्डा अभिव्यक्तियों पर थोड़ा सा पढ़ा है, और ऐसा लगता है कि मुझे पहले एक इंटरफेस घोषित करना है, और मैं इस बारे में अस्पष्ट हूं कि आपको यह कैसे और क्यों करना है।
संपादित करें: मैंने इसे एक कस्टम इंटरफेस के साथ करने का प्रयास किया। यहाँ है कोड मैं कोशिश की है:
Map<String, MathOperation> opMap = new HashMap<String, MathOperation>(){
{ put("+",(a,b)->b+a);
put("-",(a,b)->b-a);
put("*",(a,b)->b*a);
put("/",(a,b)->b/a); }
};
...
...
interface MathOperation {
double operation(double a, double b);
}
बहरहाल, यह एक त्रुटि देता है:
The target type of this expression must be a functional interface.
कहाँ वास्तव में मैं इंटरफ़ेस की घोषणा करते हैं?
'IntBinaryOperator' थोड़ा बेहतर हो सकता है। –
@PaulBoddington: हाँ, आप निश्चित रूप से सही हैं, लेकिन फिर हम एक अजीब परिदृश्य में भागते हैं: क्या होगा यदि हम उन चीजों को जोड़ने में सक्षम होना चाहते हैं जो सिर्फ एक साथ नहीं हैं? यद्यपि आपने मुझे दिखाया है, मैं इसमें शामिल हूं, इसके लिए धन्यवाद। – Makoto
हाँ उन प्रकार के परिदृश्य परेशान हो सकते हैं, जब हमें अंततः 'Map.of ("+", (x, y) -> x + y, "-", ...' यह लगभग उतना ही छोटा होगा पायथन संस्करण –