2010-12-06 18 views

Répondre

5

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.

+0

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

+0

@ Ross, s'il vous plaît accepter cette réponse, puisque vous avez dit qu'il répond à votre question. –