मैंने कोटलिन और आरएक्सजेवा का उपयोग करके अपने एंड्रॉइड ऐप में एक समस्या में भाग लिया है। यह नीचे प्रस्तुत किया गया है।कोटलिन आरएक्सजेवा न्यूलबल बग
import rx.Observable
data class TestUser(val name: String)
fun getTestUser(): Observable<TestUser> {
return Observable.just(TestUser("Brian")).flatMap { getUser() } // this compiles
}
fun getTestUser2(): Observable<TestUser> {
val observable = Observable.just(TestUser("Brian")).flatMap { getUser() }
return observable // this does not compile
}
fun getUser(): Observable<TestUser?> {
return Observable.just(null)
}
getTestUser2
में, संकलक Observable<TestUser?>
के रूप में अंतिम वापसी प्रकार infers और संकलन नहीं है। हालांकि getTestUser
में कोड संकलित करता है, और जब यह चलाया जाता है, तो उस पर्यवेक्षक के किसी भी ग्राहक को आश्चर्य की बात हो सकती है जब TestUser
null
वापस आता है।
मुझे लगता है कि यह कोटलिन और जावा के बीच आगे और आगे जाने के साथ कुछ करने का अनुमान है। लेकिन, तथ्य यह है कि कंपाइलर getTestUser2
में अंतर देख सकता है मुझे लगता है कि यह ठीक हो सकता है।
संपादित
यह Kotlin 1.0, बस कल जारी की अंतिम संस्करण (फरवरी 15, 2016) पर है।
मुझे लगता है, इस समस्या ट्रैकर वे उपयोग कर रहे है: https://youtrack.jetbrains.com/issues/KT । यदि आप एक बग रिपोर्ट –
बनाते हैं तो आप भाषा के रचनाकारों से पुष्टि/स्पष्टीकरण प्राप्त करने की अधिक संभावना रखते हैं। टीम ने पुष्टि की है कि यह एक बग है। समस्या: https://youtrack.jetbrains.com/issue/KT-11108 – voddan