Kotlin: Fuerza método en línea para preservar la cantidad de líneas definidas

votos
0

Así que tengo este método que desea utilizar para el registro a la vez que la devolución del bien conectado:

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

La clase de la madera es de un registro de la biblioteca y también (cuando configurado de esta manera) muestra la línea a la que se llama, que es también por qué el método es en línea (para mostrar la línea y correcta clase de donde fue llamado) Por ejemplo :

val b = someThingComplex().btwLog()

Básicamente, esto funciona, el único problema es que el número de línea que está mal. Esto, básicamente, tiene que ser porque Kotlin inserta el método y mientras lo hace, añade algunas líneas a la clase (4) ?.

Así que el ejemplo de antes, probablemente es similar a esto:

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

Una alternativa es que este método donde Kotlin no añade líneas adicionales:

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

¿Hay alguna manera de que yo pudiera obligar a Kotlin simplemente en línea exactamente como lo escribí y no añadir saltos de línea y esas cosas? ¿O hay una mejor manera que pude definir el método en general?

Gracias.

Publicado el 14/01/2020 a las 00:02
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Sospecho que el desplazamiento de los números de línea podría ser debido a la llamada a apply. Trate de esta manera.

inline fun <T> T.btwLog(prefix: String = ""): T {
    Timber.d(prefix + "->" + this)
    return this
}
Respondida el 14/01/2020 a las 01:16
fuente por usuario

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