पर क्लोजर बनाएं मैं कुछ ऐसा करने की कोशिश कर रहा हूं जो मुझे यकीन नहीं है कि स्कैला के प्रकार की प्रणाली मुझे करने की अनुमति देगी।जेनेरिक से Scala
मैं मूल रूप से एक सामान्य परिभाषा से बंद करना चाहता हूं और उसी प्रकार के फ़ंक्शन को आंतरिक रूप से निष्पादित करते समय बंद कर देता हूं।
उदाहरण के लिए:
val f = async[(str:String, i:Int, b:BigInt) => Unit]({ (String, Int, BigInt) =>
// Code here...
})
// 'f' would have a type of (String, Int, BigInt) => Unit and would wrap the passed anonymous function
एक परिभाषा के सैद्धांतिक उदाहरण:
def async[T](
shell: Shell,
success: T,
failure: (Throwable) => Unit): T = {
new T {
val display = shell.getDisplay()
display.asyncExec(new Runnable() {
def run(): Unit = {
try {
success(_)
} catch {
case e:Throwable =>
failure(e)
}
}
})
}
}
यह तो मुझे SWT के लिए अतुल्यकालिक कॉलबैक बनाने का एक सरल प्रणाली है करने की अनुमति होगी, से बाहर SWT रखते हुए मेरी व्यापार का तर्क।
[स्कैला जेनिक्स के संभावित डुप्लिकेट - मैं जेनेरिक क्लास के अंदर पैरामीट्रिज्ड ऑब्जेक्ट क्यों नहीं बना सकता?] (Http://stackoverflow.com/questions/5336648/scala-generics-why-i-cant-create-parametrised- ऑब्जेक्ट-इन-जेनेरिक-क्लास) –
मुझे नहीं लगता कि यह 100% डुप्लिकेट है, क्योंकि यदि मैं एक लागू विधि के साथ टाइप प्रकार टी बना देता हूं, तो मुझे अभी भी टी द्वारा प्रदान किए गए उचित मानकों को लेने की आवश्यकता होगी। , मिरर टाइप करें इस विशेष समस्या को हल करने के लिए असंभव हो सकता है। – Hakkar