2009-09-29 12 views
64

मैं कुछ इस तरह की घोषणा करने में सक्षम होना चाहते:मैं स्कैला में एकाधिक प्रकार की सीमा कैसे सेट करूं?

trait Narrowable[A] extends Iterable[A] { 

    def narrow[B <: A & B <: AnyRef] : Iterable[B] 

} 

यह है कि, प्रकार B दोनों AऔरAnyRef की एक उप-प्रकार होना चाहिए। क्या यह संभव है?

उत्तर

99

उपयोग यौगिक प्रकार:

trait Narrowable[A] extends Iterable[A] { 
    def narrow[B <: A with AnyRef] : Iterable[B] 
} 
+1

एक ही बात नहीं है, सोने के लिए खुदाई, साल बाद एक वाल्टर चांग ;-) – virtualeyes

+6

@Walter चांग के व्यावहारिक उत्तर पाता कैसे करें के बारे ** या/किसी भी दो ऊपरी में से एक सीमाएं ** 'डीफ़ संकीर्ण [बी <: ए | बी <: AnyRef]: Iterable [B] ' –

+0

@ पुष्पेन्द्र जयस्वाल आपकी सबसे अच्छी शर्त शायद सीमाओं के बजाय 'या तो [ए, AnyRef]' का उपयोग करने के लिए है। –

संबंधित मुद्दे