Итак, у меня есть этот метод, который я хочу использовать для ведения журнала при возврате зарегистрированного объекта:
inline fun <T> T.btwLog(prefix:String="")=apply { Timber.d("$prefix->${toString()}") }
Класс Timber из библиотеки ведения журнала, а также (при настройке таким образом) показывает строка, в которой он был вызван, поэтому метод является встроенным (чтобы показать строку и правильный класс того, где он был вызван). Например:
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 просто вставить его в точности так, как я его написал, а не добавить переносы строк и прочее? Или есть лучший способ, которым я мог бы определить метод в целом?
Спасибо.