Comprendre les «littéraux de chaîne» dans Ruby

Les objets chaîne tiennent 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 Rubis propose plusieurs 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. UNE littéral est une syntaxe spéciale du langage Ruby qui crée un objet d'un type spécifique. Par exemple, 23 est un littéral qui crée unFixnum objet. Quant aux littéraux String, il existe plusieurs formes.

Guillemets simples et guillemets doubles

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 le démontre.

instagram viewer

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 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 pourriez 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 ou Séquences d'échappement autre que l'échappement du caractère 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 le plus souvent.

L'exemple suivant tentera d'interpoler une variable à l'intérieur de guillemets simples.

Si vous exécutez cela, vous n'aurez aucune erreur, mais qu'est-ce qui sera imprimé?

La séquence d'interpolation a été transmise sans interprétation.

Quand dois-je utiliser des guillemets simples et doubles

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.

Séquences d'échappement

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.

  • \ n - Un caractère de nouvelle ligne. le met La méthode le fait automatiquement, mais si vous souhaitez en insérer un au milieu d'une chaîne, ou si la chaîne est destinée à autre chose que le met, vous pouvez l'utiliser pour insérer une nouvelle ligne dans une chaîne.
  • \ t - Un caractère de tabulation. Le caractère de tabulation déplace le curseur (sur la plupart des terminaux) sur un multiple de 8, c'est donc très utile pour afficher des données tabulaires. Cependant, il existe de meilleures façons de le faire, et l'utilisation du caractère de tabulation est considérée comme un peu archaïque ou hackish.
  • \ nnn - Une barre oblique inverse suivie de 3 chiffres indiquera un caractère ASCII représenté par 3 chiffres octaux. Pourquoi octal? Surtout pour des raisons historiques.
  • \ xnn - Une barre oblique inverse, un x et 2 chiffres hexadécimaux. Identique à la version octale, uniquement avec des chiffres hexadécimaux.

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.

La page suivante présente les chaînes de plusieurs lignes et une syntaxe alternative pour les littéraux de chaîne.

Cordes multi-lignes

La plupart des langues n'autorisent pas les littéraux de chaînes multi-lignes, mais Ruby le permet. Il n'est pas nécessaire de terminer vos chaînes et d'ajouter plus de chaînes pour la ligne suivante, Ruby gère les littéraux de chaîne multi-lignes très bien avec la valeur par défaut syntaxe.

Syntaxe alternative

Comme avec la plupart des autres littéraux, Ruby fournit une syntaxe alternative pour les littéraux de chaîne. Par exemple, si vous utilisez beaucoup de guillemets dans vos littéraux, vous pouvez utiliser cette syntaxe. Lorsque vous utilisez cette syntaxe est une question de style, ils ne sont généralement pas nécessaires pour les chaînes.

Pour utiliser la syntaxe alternative, utilisez la séquence suivante pour les chaînes entre guillemets simples % q {…}. De même, utilisez la syntaxe suivante pour les chaînes entre guillemets doubles % Q {…}. Cette syntaxe alternative suit toutes les mêmes règles que leurs cousins ​​"normaux". Notez également que vous pouvez utiliser les caractères de votre choix à la place des accolades. Si vous utilisez une accolade, un crochet, un crochet ou une parenthèse, le caractère correspondant mettra fin au littéral. Si vous ne souhaitez pas utiliser de caractères correspondants, vous pouvez utiliser n'importe quel autre symbole (autre chose qu'une lettre ou un chiffre). Le littéral sera fermé avec un autre du même symbole. L'exemple suivant vous montre plusieurs façons d'utiliser cette syntaxe.

La syntaxe alternative fonctionne également comme une chaîne multiligne.

instagram story viewer