मुझे स्कैला को एक प्रकार प्रक्षेपण से सही प्रकार का अनुमान लगाने के लिए कुछ परेशानी होती है।प्रक्षेपण प्रकार से सही प्रकार पैरामीटर का अनुमान कैसे लगाएं?
निम्नलिखित पर विचार करें:
trait Foo {
type X
}
trait Bar extends Foo {
type X = String
}
def baz[F <: Foo](x: F#X): Unit = ???
उसके बाद निम्न ठीक संकलित:
val x: Foo#X = ???
baz(x)
लेकिन निम्नलिखित संकलन नहीं होगा:
val x: Bar#X = ???
baz(x)
स्काला "अंतर्निहित प्रकार स्ट्रिंग देखता है "x
के लिए, लेकिन जानकारी खो दी है x
एक Bar#X
है। यह ठीक काम करता है अगर मैं प्रकार व्याख्या:
baz[Bar](x)
वहाँ स्काला baz
के लिए सही प्रकार पैरामीटर अनुमान कर बनाने के लिए एक तरीका है?
यदि नहीं, तो सामान्य उत्तर क्या है जो इसे असंभव बनाता है?
कोई जवाब नहीं है, लेकिन यह ध्यान देने योग्य है कि यदि आप एक प्रकार प्रक्षेपण के बजाय किसी प्रकार के डिज़ाइनर का उपयोग करके 'x' टाइप करते हैं, तो यह कार्य करता है- उदा। 'वस्तु बार बार बार फैली हुई है; वैल एक्स: बीएआरएक्स = "ए"; baz (एक्स) '। –
ध्यान देने योग्य भी है: आप संकलक को यह समझ सकते हैं कि आप वास्तव में _do' को 'bar # X' जैसे अविश्वसनीय रूप से बदसूरत' val x: bX forome {val b: bar} = " एक ": बीएक्स के लिए कुछ {वैल बी: बार}'। –
अजीब उपयोग के मामले की तरह लगता है। तुम ऐसा क्यों करना चाहते हो? –