Kotlin: Force inline metoda zachovat množství definovaných čar

hlasů
0

Tak jsem si tuto metodu, kterou chci použít pro záznam a zároveň vrací zaznamenána objektu:

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

Třída Dřevo pochází z těžby knihovna a také (pokud je takto nastaven) zobrazuje čáru u nichž to bylo voláno, což je také důvod, proč je tato metoda inline (ukázat linku a správné třídy, kde to bylo voláno), například :

val b = someThingComplex().btwLog()

To v podstatě funguje, jediný problém je, že číslo řádku je špatně. To musí být, protože Kotlin vloží metodu a při tom přidává některé řádky do třídy (4) v podstatě ?.

Tak na příklad z před asi vypadá podobně jako tento:

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

Alternativou je tato metoda, kde Kotlin nepřidá další řádky:

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

Existuje nějaký způsob, že bych mohl KOTLÍN přesně nutit jen inline to, jak jsem to napsal, a ne přidat konce řádek a tak? Nebo je tam lepší způsob, jak bych mohl definovat způsob obecně?

Dík.

Položena 14/01/2020 v 00:02
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Domnívám se, že přesunutí čísla řádků by mohlo být vzhledem k volání apply. Zkuste to takhle.

inline fun <T> T.btwLog(prefix: String = ""): T {
    Timber.d(prefix + "->" + this)
    return this
}
Odpovězeno 14/01/2020 v 01:16
zdroj uživatelem

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