मुझे टाइपिंग मामले के साथ स्कैला में एक छोटी सी समस्या है। हास्केल में, मैं यह कर सकता हूँ:स्कैला टाइपिंग: संख्यात्मक प्रकार कैसे सुनिश्चित करें
:add :: (Num a) => (a,a) -> (a,a) -> (a,a)
इस तरह, मैं add
में किसी भी प्रकार कि एक अंकीय है और समर्थन करता है +
आदि मैं एक स्काला वर्ग के लिए एक ही चाहते हैं, इसलिए की तरह फेंक कर सकते हैं
case class NumPair[A <: Numeric](x: A, y: A)
लेकिन ऐसा लगता है कि यह काम नहीं करता है। लेकिन स्काला डॉक्स के कारण, Numeric[T]
है केवल विशेषता है कि इन कार्यों के लिए अनुमति देता है, और लगता है Int
द्वारा बढ़ाया जा करने के लिए, Float
आदि
किसी भी सुझाव दिए गए?
मुझे यकीन नहीं है कि मुझे 'निहित' होना चाहिए - यदि आप काम को सहेजना चाहते हैं तो वे काफी अच्छे हैं, लेकिन अक्सर वे टाइप अनुमान को अस्पष्ट करके टाइपिंग सिस्टम को नष्ट कर देते हैं। – Lanbo
किस तरह से अस्पष्ट प्रकार अनुमान लगाया जाएगा? - यदि आप चाहें, तो आप 'न्यूमेरिक' उदाहरण को एक स्पष्ट पैरामीटर बना सकते हैं, लेकिन फिर आपको इसे स्पष्ट रूप से पारित करना होगा, जो 'Int', 'Float' आदि जैसे प्रकारों के लिए वास्तव में अनावश्यक है। उदाहरण के साथ, आप इस बात का विकल्प है कि आप इसे स्पष्ट रूप से पास करना चाहते हैं या नहीं। – Madoc