quelle est la meilleure solution? utiliser lambda nullable ou passer lambda vide comme paramètre par défaut? kotlin optimise en quelque sorte lambda vide? ou créer une nouvelle instance qui ne fait rien?nul ou vide lambda comme valeur par défaut
class Test1(val action:() -> Unit = {})
Malheureusement, je ne comprends pas du code généré octet. Analysons
val test11 = Test1()
après décompilation nous donne
private static final Test1 test11 = new Test1((Function0)null, 1, (DefaultConstructorMarker)null);
et enfin comme lambda est passé quelque chose comme ça
var1 = (Function0)null.INSTANCE;
modifier: questions cachées est : Comment Kotlin traite-t-il le vide lambda comme valeur par défaut?
Quelle est la solution mieux dépend de ce que vous essayez d'atteindre ou d'optimiser pour? – miensol
Je ne voudrais pas avoir des instances inutiles et vides. Je sais que la solution la plus simple est d'avoir un lambda nullable mais cela implique des constructions moche '' 'action? .invoke()' ''. –
@ PawełByszewski quelles sont vos préoccupations au sujet de '' 'classe Test1 (val action:() -> Unit = {})' ''? – ruX