मेरे पास कोड का एक टुकड़ा है जिसे मैं जिस तरह से व्यवहार करना चाहता हूं उससे व्यवहार नहीं कर सकता। मैं एक वर्ग नीचे दिए तरीक़े (इस के लिए नीचे छीन) में परिभाषित किया गया है:एकाधिक पैरामीटर क्लोजर तर्क प्रकार अनुमानित नहीं है
class Behaviour[T](private val rule: Time => T) {
def map1[U, V](behaviour: Behaviour[U], func: (T, U) => V): Behaviour[V] = {
new Behaviour(time => func(this.at(time), behaviour.at(time)))
}
}
जब इस वर्ग मैं कुछ है कि मैंने सोचा था कि तुच्छ होगा करने की कोशिश की के साथ प्रयोग करना:
val beh = Behaviour(time => 5)
val beh2 = Behaviour(time => 5)
beh.map1(beh2, (a, b) => a + b)
पिछले के लिए लाइन मैं निम्न त्रुटि प्राप्त:
<console>:13: error: missing parameter type
beh.map1(beh2, (a, b) => a + b)
^
मैं निश्चित रूप से बंद पैरामीटर प्रकार निर्दिष्ट कर सकते हैं और इसे सही ढंग से काम करता है लेकिन क्यों यहाँ अनुमान काम टाइप नहीं करता है? बेशक मैं फ़ंक्शन के लिए जेनेरिक प्रकार भी निर्दिष्ट कर सकता हूं (दोनों समाधानों के लिए नीचे देखें)।
मैंने सोचा था कि स्केल ने अनुमानित प्रकारों के लिए 'स्कैन' किया था और beh2
देखेंगे और फ़ंक्शन में पास हो जाएगा और होने के लिए U
मान लेंगे। क्या इनपुट तरीका पैरामीटर के प्रकार (बंद या जेनेरिक के लिए) निर्दिष्ट किए बिना मैं इसे ठीक कर सकता हूं?
संपादित करें: दो फिक्स मेरे पास है, इसके उदाहरण:
beh.map1[Int, Int](beh2, (a, b) => a + b)
beh.map1(beh2, (a, b : Int) => a + b)
बहुत बहुत धन्यवाद जो ठीक काम करता है! अगर अगले दिन में क्या हो रहा है, तो स्पष्टीकरण के साथ कोई भी नहीं आ सकता है, तो मैं जवाब स्वीकार करूंगा। – seadowg