J'utilise le code suivant pour vérifier si le hachage est vide. Existe-t-il une meilleure méthode et son utilisation est-elle sûre ?
if (!keys %hash) { print "Empty";}
J'utilise le code suivant pour vérifier si le hachage est vide. Existe-t-il une meilleure méthode et son utilisation est-elle sûre ?
if (!keys %hash) { print "Empty";}
if (%hash)
Cela fonctionnera très bien.
De perldoc perldata :
Si vous évaluez un hachage dans un contexte scalaire, il renvoie false si le hachage est vide. S'il y a des paires clé/valeur, elle renvoie true ; plus précisément plus précisément, la valeur retournée est une chaîne de caractères composée du nombre de seaux utilisés et le nombre de seaux alloués, séparés par une barre oblique. barre oblique.
Il y avait un bug qui faisait que les hachages liés dans un contexte scalaire retournaient toujours false. Le bogue était corrigé en 5.8.5 . Si vous êtes préoccupé par la rétrocompatibilité, je m'en tiendrais à l'option if( !keys %hash )
. Sinon, utilisez if( !%hash )
comme recommandé par d'autres.
Plus simple :
if (!%hash) {
print "Empty";
}
! impose un contexte scalaire, et le hachage évalué dans un contexte scalaire renvoie :
false
s'il y a zéro clé (non défini dans la documentation mais retourne expérimentalement 0
)
Une chaîne de caractères indiquant le nombre de compartiments utilisés/alloués pour les clés >0, qui ne sera bien sûr PAS fausse (par exemple, "3/6").
"Meilleur" est un terme subjectif. Cependant, je dirais qu'un code plus facile à comprendre peut être qualifié de "meilleur". Pour cette raison, je conclus que !keys %hash
est préférable, car tous ceux qui écrivent du code perl sauront ce que fait ce code et qu'il fonctionne. !%hash
est quelque chose que je devrais au moins vérifier pour m'assurer qu'il fonctionne vraiment ou qu'il a seulement l'air de fonctionner. (La raison étant que la valeur de retour d'un hachage dans un contexte scalaire est plutôt déroutante alors que le comportement d'un tableau dans un contexte scalaire est bien connu et souvent utilisé).
Aussi, !keys %hash
est sûr.
Donc non, il n'y a pas de meilleur moyen ou de moyen plus sûr de vérifier si un hachage est vide.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
7 votes
Si vous estimez que votre question a reçu une réponse, vous devez accepter une réponse en cliquant sur la coche à sa gauche.