Table des matières
- Quelle est la différence entre
%i
et%I
en Ruby ? - Quand utiliser
%i
vs.%I
- Bonnes pratiques
- Questions fréquentes
Quelle est la différence entre %i
et %I
en Ruby ?
En Ruby, %i
et %I
sont des littéraux de tableau utilisés pour créer des tableaux de symboles. Les symboles sont des objets légers et immuables, fréquemment utilisés comme clés de hachage ou identifiants. La différence principale réside dans la manière dont ils gèrent la casse :
%i
: Traite toutes les entrées en minuscules. Les majuscules entre crochets sont interprétées littéralement comme des chaînes, puis converties en symboles. Cela peut conduire à des résultats inattendus si vous souhaitez conserver la casse.%I
: Conserve la casse. Les majuscules et les minuscules sont toutes deux correctement interprétées comme des symboles, en maintenant la casse d’origine.
Voici un exemple illustrant la différence :
lowercase_symbols = %i[one Two three]
puts lowercase_symbols # => [:one, :"Two", :three] # Note : "Two" est un symbole chaîne
uppercase_symbols = %I[one Two three]
puts uppercase_symbols # => [:one, :Two, :three] # Tous sont des symboles
Quand utiliser %i
vs. %I
Le choix entre %i
et %I
dépend de vos besoins :
- Utilisez
%i
lorsque la sensibilité à la casse est sans importance pour vos symboles et que vous souhaitez un moyen concis de créer des tableaux de symboles en minuscules. Cela améliore souvent la lisibilité. - Utilisez
%I
lorsque la sensibilité à la casse est importante (par exemple, pour représenter des constantes ou des énumérations où:CONSTANT
est différent de:constant
). Cela garantit que la casse de vos symboles est correctement représentée.
Bonnes pratiques
- Cohérence : Choisissez un littéral et respectez-le dans un projet donné pour éviter toute confusion.
- Lisibilité : Pour les longues listes, divisez-les en tableaux plus petits et plus faciles à gérer.
- Conventions de nommage : Utilisez des tirets bas (par exemple,
%i[first_name last_name]
) pour les symboles à plusieurs mots afin d’améliorer la lisibilité. - Évitez l’ambiguïté : Si vous n’êtes pas sûr de la casse,
%I
est généralement plus sûr.
Questions fréquentes
- Puis-je utiliser d’autres types de données que les chaînes ? Non, l’entrée est toujours interprétée comme des chaînes, puis convertie en symboles.
- Que se passe-t-il si j’utilise un symbole directement ? Il est traité comme une chaîne, modifiant potentiellement la casse du symbole résultant.
- Y a-t-il une différence de performance ? La différence de performance entre ces littéraux et la création manuelle de tableaux est négligeable.