निम्नलिखित लक्षण और कक्षा को देखते हुए। यह संकलन क्यों करता है? क्या यह वास्तव में कुछ के लिए इस्तेमाल किया जा सकता है?अमूर्त प्रकार के सदस्यों के साथ कंक्रीट कक्षाएं
trait Container {
type A
}
trait AnotherContainer[B]{
def x(b : B) : B
}
trait Mixed extends Container with AnotherContainer[Container#A]
class Impl extends Mixed{
def x(a : Container#A) = a
}
new Impl().x _
scala> new Impl().x _
res0: (Container#A) => Container#A = <function>
अद्यतन:
class Baz { type T; }
वास्तव में एक सुविधा है, लेकिन मैं इसके लिए प्रेरणा नहीं मिल सका: #1753।
मुझे एक बग की तरह लग रहा है। –
क्यों? मिश्रित में एक और कॉन्टैनेर के उदाहरण में बी ए है, इसलिए x के लिए हस्ताक्षर दूसरेContainer.x और Impl.x के बीच संगत है। या क्या मैं कुछ न कुछ भूल रहा हूं? –
@ रैंडल वेल, 'टाइप ए' सार है, और मुझे यह कहीं भी ठोस नहीं दिख रहा है। तो मैं उम्मीद करता हूं कि 'इंपल' संकलित न करें, "अमूर्त होने की आवश्यकता" त्रुटि लौटाएं। –