Kotlin: Force méthode en ligne pour conserver le nombre de lignes définies

voix
0

J'ai donc cette méthode que je veux utiliser pour l'enregistrement tout en retournant l'objet connecté:

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

La classe du bois est d'une exploitation forestière Bibliothèque et aussi (quand mis en place de cette façon) montre la ligne à laquelle il a été appelé, qui est aussi la raison pour laquelle la méthode est en ligne (pour montrer la ligne et la classe correcte de l'endroit où il a été appelé) Par exemple :

val b = someThingComplex().btwLog()

Cela fonctionne essentiellement, le seul problème est que le numéro de ligne est erroné. Cela a essentiellement être parce que Kotlin insère la méthode et ajoute tout en faisant de sorte que certaines lignes à la classe (4) ?.

Ainsi, l'exemple d'avant ressemble probablement similaire à ceci:

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

Une alternative est cette méthode où Kotlin ne pas ajouter des lignes supplémentaires:

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

Est-il possible que je pouvais forcer Kotlin juste en ligne exactement comme je l'ai écrit et ne pas ajouter linebreaks et des trucs? Ou est-il une meilleure façon que je pourrais définir la méthode en général?

Merci.

Créé 13/01/2020 à 22:02
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Je pense que le déplacement des numéros de ligne peut être dû à l'appel apply. Essayez cette façon.

inline fun <T> T.btwLog(prefix: String = ""): T {
    Timber.d(prefix + "->" + this)
    return this
}
Créé 13/01/2020 à 23:16
source utilisateur

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