मैं एक विकल्प के रूप में एक विधि को बंद करना चाहता हूं और मैं नीचे दिखाया गया हूं। मुझे नीचे दिखाए गए संकलन त्रुटि मिलती है। क्या किसी फ़ंक्शन में वैकल्पिक क्लोजर पैरामीटर पास करना संभव है?फ़ंक्शन में वैकल्पिक क्लोजर पैरामीटर कैसे पास करें?
def sampleMethod(a: String, b: String, optionalMethod: Option[(String, Int) => Unit]) {
// do some processing with a and b
optionalMethod match {
case Some(optionalMethod) => {
optionalMethod("a",3)
}
case _
log("no optional method passed")
}
}
// definition of optMethod in some other place
val optMethod = (c: String, d: Int) => {
// some processing with c, d and external values
}
// invoke
sampleMethod("hi", "bye", optMethod) => FAILS TO COMPILE
ERROR = type mismatch. expecting Option[(String, Int) => Unit] found (String, Int) => Unit
नमूना विधि ("हाय", "अलविदा", कुछ (optMethod)) – twillouer
वैकल्पिकMethod.map (f => f ("a", 3)) अधिक स्पष्ट होने के लिए – twillouer
बस 'अन्य भाषाओं और उनके उपयोगकर्ता समुदाय के साथ मैला termino लॉजी, चलो यहाँ ऐसा नहीं करते हैं। "क्लोजर" का मतलब फ़ंक्शन शाब्दिक (उस फ़ंक्शन के शरीर में बाइंडिंग के बिना नाम) में नि: शुल्क चर के उपयोग को संदर्भित करता है और उन संदर्भों को शब्दावली वातावरण में "बंद" किया जाता है। सभी कार्यों में व्याख्यात्मक वातावरण में बंद होना शामिल नहीं है। सभी कार्य फ़ंक्शन अक्षर नहीं हैं। उदाहरण के लिए, वे अक्सर किसी अन्य फ़ंक्शन या विधि के "आंशिक अनुप्रयोग" के माध्यम से (या तो संकलक या स्पष्ट रूप से पारदर्शी रूप से और पारदर्शी रूप से) बनाए जाते हैं। –