quand utiliser une fonction inline dans Kotlin?

Je sais qu'une fonction inline va peut-être améliorer les performances & cause le code généré pour grandir, mais je ne suis pas sûr que lorsqu'il est correctement l'utiliser.

lock(l) { foo() }

Au lieu de créer un objet de fonction pour le paramètre et la génération d'un appel, le compilateur pourrait émettre le code suivant. (Source)

l.lock()
try {
  foo()
}
finally {
  l.unlock()
}

mais j'ai trouvé qu'il n'y a pas de fonction d'objet créé par kotlin, pour un non-fonction inline. pourquoi?

/**non-inline function**/
fun lock(lock: Lock, block: () -> Unit) {
    lock.lock();
    try {
        block();
    } finally {
        lock.unlock();
    }
}
  • Il existe deux principaux cas d'utilisation pour cela, on est avec certains types de fonctions supérieures, et l'autre est réifiée des paramètres de type. La documentation des fonctions inline couvre-ci: kotlinlang.org/docs/reference/inline-functions.html
  • merci, monsieur. mais je ne comprends pas que : "au Lieu de créer un objet de fonction pour le paramètre et la génération d'un appel, le compilateur pourrait émettre le code suivant"
  • je n'obtiens que l'exemple soit tbh.
InformationsquelleAutor holi-java | 2017-06-10