Comparaison des Lambdas : implémentation et interprétation
Le problème :
Étant donné une liste d'objets définis à l'aide d'expressions lambda, est-il possible de les inspecter et de les comparer pour vérifier leur égalité ?
Considérations relatives à la mise en œuvre :
Du point de vue de la mise en œuvre, les lambdas non capturants sont évalués en même temps Le site de capture produit la même instance, qui peut être comparée en utilisant l'égalité de référence. Cependant, des expressions lambda distinctes capturées sur différents sites peuvent correspondre à différentes classes synthétiques.
Implications de la spécification :
La spécification du langage garantit uniquement que le résultat de l'évaluation d'une expression lambda est une instance de l'interface fonctionnelle cible. Il ne précise pas l'identité ou l'alias du résultat. Cette flexibilité permet aux implémentations d'optimiser les performances en ne créant pas d'instances uniques pour chaque évaluation lambda.
Égalité de référence de méthode :
Les références de méthode peuvent fournir un scénario pratique pour peaufiner la définition. d'égalité pour soutenir l'utilisation en tant qu'auditeurs. Ceci est à l'étude pour de futures révisions.
Évaluation approfondie :
Déterminer l'égalité de deux lambdas nécessite de comparer leur fonction de comportement, les arguments capturés et l'interface fonctionnelle qu'ils sont convertis en. Cependant, obtenir ces informations pour les lambdas non sérialisables peut être difficile.
Décisions de conception :
Le groupe d'experts Java a conclu qu'il ne vaut pas la peine d'exposer des informations pour les comparaisons d'égalité lambda la pénalité de performance pour la majorité des utilisateurs. Cependant, la faisabilité de l'amélioration des représentations toString() reste ouverte pour de futures discussions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!