[Ruby] Les chaînes de caractères - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Ruby] Les chaînes de caractères (/showthread.php?tid=4096) |
[Ruby] Les chaînes de caractères - Sephi-Chan - 16-06-2009 Les chaînes de caractères
Déclaration et affichage Une chaîne de caractère est représentée par une suite de caractères (d'où le nom) entourée de guillemets doubles (") ou simples('). Ces guillemets servent à dire à Ruby qu'il à affaire à une chaîne. Que se passe-t-il, si on omet ces guillemets ?
Code : variables.rb:1: uninitialized constant Jambon (NameError) Une erreur est générée ! En effet, Ruby est allé chercher la constante (et non une variable, puisque son nom commence par une majuscule) Jambon qui n'existe pas ! Et si je veux mettre des guillemets dans ma chaîne ? Comment Ruby va savoir que ce n'est pas pour dire que la chaîne s'arrête ? Pour cela, il y a plusieurs alternatives : utiliser des guillemets simples pour entourer une chaîne qui inclut des guillemets doubles (et inversement), ou bien échapper les guillemets inclus dans la chaîne. Cela veut dire qu'on va faire perdre aux guillemets leur sens aux yeux de Ruby. Pour échapper un caractère, on utilise un anti-slash (\).
Et si je veux mettre des \ dans ma chaîne de caractères ? Et bien… On échappe le caractère d'échappement !
Code : Pour échapper un caractère, on utilise un . Quand vous utilisez des guillemets simples, les variables encadrées intégrées dans la chaîne (#{variable}, par exemple) ne sont pas interprétées ! De plus, les caractères spéciaux (comme \n pour un retour à la ligne) ne fonctionnent pas. Utiliser des délimiteurs personnalisés Si les guillemets ne vous conviennent pas, vous pouvez utiliser vos propres délimiteurs grâce à une notation spéciale. Voici cette notation, avec laquelle je vais utiliser le caractère @ comme délimiteur.
Code : Avec cette notation, pas besoin d'échapper mes caractères ! Je peux mettre des ", des ' ou des \ sans soucis ! La différence entre %q et %Q, c'est que le premier se comporte comme une chaîne délimitée par des guillemets simples, alors que l'autre réagit comme si c'était une chaîne entourée de guillemets doubles. Si vous choisissez un caractère comme (, { ou [, les délimiteurs inverses seront respectivement ), } et ]. N'oubliez pas la façon dont sont interprétées les variables selon que l'on utilise les guillemets simple ou doubles, ou que l'on utilise %q ou %Q ! Si on ne spécifie pas q ou Q, le comportement par défaut est celui de Q.
Code : Vive le #{nourriture} ! La syntaxe Here documents Une syntaxe alternative permet d'éviter les problèmes d'échappement et d'insérer nos variables sans soucis. Elle est très utile dans le cas de grandes chaînes, notamment. On utilise pour cela un mot clé qui sera indiqué en début et en fin de bloc.
Code : Il était un petit navire, Un peu d'arithmétique Et oui, avec le texte aussi ! On peut additionner des chaînes de caractères entre elles !
Code : Moi j'aime le pâté ! Mais que se passe-t-il ? Mais que se passe-t-il ? Mais qu'est-ce qui se passe ? J'ai dis que nous pouvions additionner des chaînes entre elles, age contient un nombre entier (Fixnum) ! Heureusement, il y a une solution. Les objets ont généralement une méthode qui permet de renvoyer leur contenu sous forme d'une chaîne de caractères. Cette méthode s'appelle to_s (pour to string).
En revanche, on peut multiplier une chaîne avec un entier !
Code : C'est l'histoire d'un 0 qui rencontre un 8. Et notez la priorité sur les opérations ! Amusant, n'est-ce pas ? Sephi-Chan RE: [Ruby] Les chaînes de caractères - keke - 17-06-2009 Ca aurait marché si on avait écrit puts 3 * "Ha !" au lieu de puts "Ah !" * 3 Kéké qui ne voit pas encore bien l'intérêt de se langage mais qui va suivre tout tes tutoriaux, juste pour être sur de ne pas passer à côté de quelque chose. RE: [Ruby] Les chaînes de caractères - My Hotel - 17-06-2009 Après avoir lu tous les tutos que tu as posté Sephi (y'en avait pas non plus 500), j'en redemande, pour le plaisir d'apprendre Mais c'est vrai, que comme Kéké, je distingue pas beaucoup (pas du tout même) les avantages de Ruby par rapport à d'autres. Tu devrais écrire un chapitre là dessus, parce que pour l'instant je préfère largement Java RE: [Ruby] Les chaînes de caractères - Allwise - 17-06-2009 Le "string" * 3 signifie-t-il qu'avec Ruby, on peut librement surcharger les opérateurs ? ( si oui, on peut aussi surcharger les fonctions ? ) Ça, ce serait sympa RE: [Ruby] Les chaînes de caractères - Roworll - 17-06-2009 C'est quand même hyper proche du Python (la multiplication de chaînes existant aussi sur ce langage). J'avais aimé aussi en Python tout le travail possible sur les chaînes, du style Code : >>>s="Bonjour" Je suppose que Ruby peut faire de même. RE: [Ruby] Les chaînes de caractères - Sephi-Chan - 17-06-2009 Oui, Ruby propose sensiblement la même chose. Cf. String[]
Sinon, on peut effectivement surcharger quelques opérateurs, oui. En revanche, le langage étant dynamiquement typé, tu ne peux pas avoir plusieurs méthodes qui ont des arguments différents : la dernière méthode est utilisée. En pratique, avec Rails, le plus souvent, on surcharge attribut=.
RE: [Ruby] Les chaînes de caractères - Sephi-Chan - 31-10-2009 J'ajoute un petit correctif concernant la notation permettant de s'affranchir de tout échappement de caractère. Je rappelle cette notation (la coloration syntaxique du forum chie un peu avec cette notation…)) :
Petits rappels sur cette notation :
J'ai appris récemment qu'on pouvait se passer du symbole Q. Il s'agit du comportement par défaut. Un exemple appliqué à Rails, dans une méthode de validation d'un modèle.
Il me semble que cette notation bien sympathique est héritée de Perl. Sephi-Chan |