Kotlin: सेना परिभाषित लाइनों की राशि को बचाने के लिये इनलाइन विधि

वोट
0

इसलिए मैं इस पद्धति है कि मैं प्रवेश के लिए उपयोग करना चाहते हैं, जबकि भी लॉग वस्तु लौटने:

inline fun <T> T.btwLog(prefix:String=)=apply { Timber.d($prefix->${toString()}) }

इमारती लकड़ी वर्ग एक प्रवेश पुस्तकालय और भी (जब इस तरह की स्थापना) लाइन, जिस पर यह कहा जाता था पता चलता है, जो भी कारण है कि विधि इनलाइन है उदाहरण के लिए (लाइन और जहां यह कहा जाता था की सही वर्ग को दिखाने के लिए) से है :

val b = someThingComplex().btwLog()

यह मूल रूप से काम करता है, केवल एक समस्या यह लाइन नंबर गलत है। यह मूल रूप से, क्योंकि Kotlin विधि सम्मिलित करता है और ऐसा करते समय वर्ग (4) के लिए कुछ लाइनों कहते हो गया है ?.

तो इससे पहले कि शायद इस के समान दिखता है से उदाहरण:

val b = someThingComplex()
        .apply { 
        Timber.d($prefix->${toString()})
        }

एक वैकल्पिक इस विधि जहां Kotlin अतिरिक्त लाइनें नहीं जोड़ता है:

inline fun Any.log(s:String=)= Timber.d(s+this)

वहाँ किसी भी तरह से है कि मैं बिल्कुल के रूप में मैं इसे लिखा था और लाइनब्रेक और सामान नहीं जोड़ बस इसे इनलाइन को Kotlin मजबूर कर सकता है? या वहां एक बेहतर तरीका है कि मैं सामान्य रूप में विधि निर्धारित कर सकते है?

धन्यवाद।

14/01/2020 को 00:02
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

मुझे लगता है कि लाइन नंबर का स्थानान्तरण करने के लिए कॉल की वजह से हो सकता है apply। इसे इस तरह की कोशिश करो।

inline fun <T> T.btwLog(prefix: String = ""): T {
    Timber.d(prefix + "->" + this)
    return this
}
14/01/2020 को 01:16
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more