2015-02-01 2 views
5

के साथ कोटलिन और ऊपरी प्रकार के बाउंड्स कोटलिन को कॉन्वर्स सेटिंग में ऊपरी/निचले प्रकार की सीमाओं का समर्थन करता है। उदाहरण के लिए, मैं कहना हैकोविरिन

class Foo<out T> { 
    fun or<U of T or greater>(other: U): <U> = ... 
} 

जो स्काला में

class Foo[+T] { 
    def or[U >: T](other: U): U = ... 
} 

होगा चाहते हैं लेकिन संकलक यह पसंद नहीं लगता है, यह प्रकार पैरामीटर टी की covarianceness के बारे में शिकायत

उत्तर

5

कोटलिन इस बिंदु पर कम सीमा का समर्थन नहीं करता है। कभी-कभी आप सदस्य के बजाय एक एक्सटेंशन फ़ंक्शन को परिभाषित करने से दूर हो सकते हैं:

fun <T> Foo<T>.or(other: T): T = ... 
+0

और ऊपरी सीमाएं कॉन्वर्सिस के साथ समर्थित नहीं हैं? – monkjack

+0

ऊपरी सीमाएं कॉन्वर्सिस के लिए अवांछित हैं, इस प्रकार –

+2

की अनुमति नहीं है, उदाहरण के संदर्भ में मैंने स्कैला के एसडीके में आम क्यों दिया? – monkjack