Quand utiliser en ligne
Lorsqu'un lambda est inclus dans un paramètre de méthode
Quel est le rôle de l'inlining
Pour améliorer les performances, ne disons pas de bêtises et allons directement au code
sans doublure
import java.util.*
fun main() {
inlineTest() { result, code ->
println("resout:$result code:$code")
}
}
fun inlineTest(res: (String, Int) -> Unit) {
res("错了错了", 404)
}
Afficher le bytecode
En regardant le bytecode compilé, nous pouvons savoir qu'il est empaqueté comme
L'objet Function2 effectue ensuite une série d'opérations. Le processus est plus compliqué
plus en ligne
Re-voir le bytecode de la manière ci-dessus
Quelque chose de magique s'est produit. Le code est plus concis. L'efficacité s'est également améliorée.
PS : avec ou sans effet, le rendu est le même
resout:错了错了 code:404
faire référence à: