नीचे वर्णित अनुसार मेरे स्कैला 2.11.7 प्रतिकृति में foo(1)
पर कॉल क्यों करता है?क्यों फू [एफ [_], ए] (एफएफ: एफ [ए]) foo (1) स्वीकार करते हैं?
scala> def foo[F[_], A](fa: F[A]) = null
foo: [F[_], A](fa: F[A])Null
scala> foo(List(1))
res0: Null = null
scala> foo(1)
res1: Null = null
foo(1)
करने के लिए अपने कॉल में पैरामीटर एक प्रकार निर्माता तो क्यों स्काला repl यह स्वीकार नहीं करता है?
स्थिति भी बहुत कुछ अजीब है। केस ऑब्जेक्ट ए; foo (ए) 'काम नहीं करता है। यदि समस्या आपके द्वारा वर्णित 'कोई भी' थी - तो यह काम करता। इसके अलावा 'Predef' में 'एरोएएसएस' जैसी कुछ अंतर्निहित रूपांतरण हैं, जो वास्तव में 'एफ [_]' होने में योगदान दे सकते हैं, लेकिन अन्य भी हैं। इसलिए मैं इस त्रुटि का आकलन करता हूं कि इसमें अस्पष्ट अंतर्निहित रूपांतरण हैं, लेकिन यह नहीं है और यह 'Int' स्वीकार करता है, लेकिन' ऑब्जेक्ट ए 'नहीं। इसके अलावा मैंने एक बहुत ही समान कोड के साथ संदिग्ध अंतर्निहित रूपांतरण त्रुटि देखी है, लेकिन दुर्भाग्य से – Archeg
दुर्भाग्य से इसे पुन: उत्पन्न नहीं कर सकता है जब मेरे पास कुछ खाली समय होता है तो मैं ऑब्जेक्ट रूपांतरण में देखता हूं। –
इसलिए, यदि मैं 'foo' को 'def foo [F [_], ए] (fa1: F [A], fa2: F [A]) के रूप में परिभाषित करता हूं और फिर' foo (1," हैलो ") को कॉल करता हूं, , यह एक कानूनी कॉल है क्योंकि '1' और' "हैलो" दोनों प्रकार के टाइप-कन्स्ट्रक्टर हैं 'Any'? – rodoherty1