यह संकलित क्यों नहीं करता है?बिज़ारे प्रकार अनुमान सीमा - एकाधिक प्रकार पैराम
trait Lol[A, SA] {
def flatMap[B, SB](f: A => Lol[B, SB]): Lol[B, SB] = ???
}
val p1: Lol[Int, String] = ???
val p2: Lol[Double, Nothing] = ???
val p5 = p1.flatMap(_ => p2)
परिणाम:
found : Int => Lol[Double,Nothing]
required: Int => Lol[Double,SB]
val p5 = p1.flatMap(_ => p2)
^
हालात संकलित करने के लिए है जब या तो शुरू: (? WTF)
flatMap
मंगलाचरण के
- प्रकार पैरामीटर स्पष्ट कर रहे हैं
SA
covariant है- कुछ
Nothing
से अन्य प्रकार हम हैंp2
में एड (उदा।Null
) SB
flatMap
की वापसी प्रकार में पाए जाते हैं या (जैसे वापसी प्रकारOption[SB]
है)
कि वापसी प्रकार की covariant स्थिति से ऊपर समाधान हालांकि मेरे लिए स्वीकार्य नहीं हैं में होता नहीं है।
भिन्नता आपके लिए कोई विकल्प क्यों नहीं है? आमतौर पर जहां संभव हो भिन्नता का उपयोग करना एक अच्छा विचार है। 'कुछ भी नहीं' का उपयोग अधिकांश समय केवल भिन्नता के तहत समझ में आता है। –
@ 0__ 'SA' बस पूर्ण एपीआई (यहां दिखाया नहीं गया) को कॉन्वेंट नहीं किया जा सकता है। हालांकि - आप 'कुछ भी नहीं' के बारे में सही हैं - यदि 'एसए' संविधान नहीं है, तो शायद मैं 'कुछ भी नहीं' – ghik
का उपयोग करने के बजाय अपना खुद का विशेष प्रकार बना सकता हूं, फिर भी, यह त्रुटि अभी भी हास्यास्पद रूप से बिगड़ और एक बग की गंध है। – ghik