Les objets chaîne contiennent des séquences ordonnées d'octets, généralement des caractères, généralement pour former des morceaux de texte lisible par l'homme. Ils sont un type d'objet très courant dans tous les langages de programmation, et Ruby a un certain nombre de méthodes de haut niveau et quelques méthodes de bas niveau pour créer, accéder et manipuler des objets String..
Les chaînes sont le plus souvent créées avec un Littéral de chaîne. Un littéral est une syntaxe spéciale dans le langage Ruby qui crée un objet d'un type spécifique. Par exemple, 23 est un littéral qui crée un Fixnum objet. Quant aux littéraux de chaîne, il existe plusieurs formes.
La plupart des langues ont un littéral String similaire à celui-ci, donc cela peut être familier. Les types de guillemets »(guillemet simple, apostrophe ou citation difficile) et "(guillemet double ou citation douce) sont utilisés pour entourer les littéraux de chaîne, tout ce qui se trouve entre eux sera transformé en objets String. L'exemple suivant montre cela.
Mais il y a quelques différences entre les guillemets simples et doubles. Citations doubles ou citations douces permettre à la magie de se produire dans les coulisses. L'interpolation à l'intérieur des chaînes est la plus utile, utile pour insérer la valeur d'une variable au milieu d'une chaîne. Ceci est réalisé en utilisant le # … séquence. L'exemple suivant vous demandera votre nom et vous saluera, en utilisant l'interpolation pour insérer votre nom dans le littéral de chaîne qui est imprimé.
Notez que tout code peut aller à l'intérieur des accolades, pas seulement les noms de variables. Ruby évaluera ce code et tout ce qui sera retourné, il tentera de l'insérer dans la chaîne. Vous pouvez donc tout aussi facilement dire "Bonjour, # gets.chomp" et oubliez le Nom variable. Cependant, il est recommandé de ne pas mettre de longues expressions entre accolades.
Citations simples, apostrophes ou citations dures sont beaucoup plus restrictives. À l'intérieur des guillemets simples, Ruby n'effectuera aucune interpolation ni séquence d'échappement autre que l'échappement du caractère de guillemet simple et la barre oblique inverse elle-même (\ ' et \\ respectivement). Si vous n'avez pas l'intention d'utiliser l'interpolation, il est recommandé d'utiliser des guillemets simples plus souvent qu'autrement.
L'exemple suivant tentera d'interpoler une variable à l'intérieur de guillemets simples.
Si vous exécutez ceci, vous n'aurez aucune erreur, mais ce qui sera imprimé?
La séquence d'interpolation a été transmise sans interprétation.
C'est une question de style. Certains préfèrent utiliser des guillemets doubles tout le temps, sauf s'ils deviennent incommodes. D'autres préfèrent utiliser des guillemets simples, sauf si le comportement d'interpolation est prévu. Il n'y a rien en soi dangereux sur l'utilisation de guillemets doubles tout le temps, mais cela rend le code plus facile à lire. Vous n'avez pas besoin de lire une chaîne lors de la lecture du code si vous savez qu'il n'y a pas d'interpolations car vous savez que la chaîne elle-même n'aura aucun effet secondaire. Donc, quelle forme littérale de chaîne que vous utilisez dépend de vous, il n'y a pas de vrai et mauvais chemin ici.
Et si, dans un littéral de chaîne, vous souhaitez inclure un caractère de citation? Par exemple, la chaîne "Steve a dit" Moo! " ne fonctionnera pas. Et non plus «Je ne peux pas toucher ça!. Ces deux chaînes incluent le caractère de citation à l'intérieur de la chaîne, mettant ainsi fin au littéral de chaîne et provoquant une erreur de syntaxe. Vous pouvez changer de guillemets, comme «Steve a dit« Moo! »», mais cela ne résout pas vraiment le problème. Au lieu de cela, vous pouvez échapper n'importe quel caractère de citation à l'intérieur de la chaîne, et il perdra sa signification spéciale (dans ce cas, la signification spéciale est de fermer la chaîne).
Pour échapper à un caractère, ajoutez-le avec le caractère barre oblique inverse. Le caractère barre oblique inverse indique à Ruby d'ignorer toute signification spéciale que le personnage suivant pourrait avoir. S'il s'agit d'un caractère de citation correspondant, ne terminez pas la chaîne. S'il s'agit d'un signe de hachage, ne démarrez pas un bloc d'interpolation. L'exemple suivant illustre cette utilisation de la barre oblique inverse pour échapper les caractères spéciaux.
Le caractère barre oblique inverse peut être utilisé pour supprimer toute signification spéciale du caractère suivant, mais, de manière confuse, il peut également être utilisé pour désigner un comportement spécial dans les chaînes entre guillemets doubles. La plupart de ces comportements spéciaux concernent l'insertion de caractères et de séquences d'octets qui ne peuvent pas être saisis ou représentés visuellement. Toutes les chaînes ne sont pas des chaînes de caractères ou peuvent contenir des séquences de contrôle destinées au terminal et non à l'utilisateur. Ruby vous permet d'insérer ces types de chaînes à l'aide du caractère d'échappement barre oblique inverse.
Vous n'en utiliserez probablement jamais la plupart, mais sachez qu'ils existent. Et rappelez-vous également qu'ils ne fonctionnent que dans des chaînes entre guillemets doubles.