dans Ruby 1.8 "foo"[0]
retourné le code de caractère à l'index 0 au lieu de la chaîne de caractères à l'index 0. Dans le cadre de la prise en charge des chaînes internationales avec divers codages (au lieu de tableau d'octets), Ruby 1.9 a modifié ce comportement pour renvoyer la chaîne de caractères unique à l'index spécifié.
En plus de cette modification, ?a
a été modifié pour être évalué en tant que chaîne de caractères à un seul caractère. C'était vraisemblablement pour que les bibliothèques avec un code comme celui-ci ...
if my_string[0] == ?a
... continuerait à fonctionner. Si vous voulez la valeur de code de caractère pour le premier caractère d'une chaîne, utilisez String#ord
:
puts "It's a boy!" if my_string[0].ord == 89
Pour beaucoup plus de réponse, voir this stackoverflow question.
Cela répond à ma question. J'avais un doute mais nous disons que ruby est une langue plus lisible anglais. Je ne pouvais tout simplement pas comprendre ce que'ord 'veut dire. de manière plus lisible je m'attendrais quelque chose comme my_string [0] .ascii == 89 – Ross
@ Ross, s'il vous plaît accepter cette réponse, puisque vous avez dit qu'il répond à votre question. –