Articles

RubyLearning.com

<Ranges|TOC/Hachages>

Un symbole ressemble à un nom de variable mais il est préfixé par deux points. Exemples – : action,: éléments de ligne. Vous n’avez pas à pré-déclarer un symbole et ils sont garantis uniques. Il n’est pas nécessaire d’attribuer une sorte de valeur à un symbole – Ruby s’en occupe pour vous. Ruby garantit également que, peu importe où il apparaît dans votre programme, un symbole particulier aura la même valeur.

Alternativement, vous pouvez considérer que les deux points signifient « chose nommée » donc: id est « la chose nommée id. »Vous pouvez également penser à: id comme signifiant le nom de la variable id, et plain id comme signifiant la valeur de la variable.

Un symbole est l’objet Ruby le plus basique que vous puissiez créer. C’est juste un nom et un identifiant interne. Les symboles sont utiles car un nom de symbole donné fait référence au même objet dans un programme Ruby. Les symboles sont plus efficaces que les chaînes. Deux chaînes avec le même contenu sont deux objets différents, mais pour un nom donné, il n’y a qu’un seul objet Symbole. Cela peut économiser du temps et de la mémoire.

Référez-vous à l’exemple : p039symbol.rb ci-dessous

La sortie lorsque j’ai exécuté le programme sur mon PC était:

Par conséquent, quand utilisons-nous une chaîne par rapport à un symbole?

  • Si le contenu (la séquence de caractères) de l’objet est important, utilisez une chaîne
  • Si l’identité de l’objet est importante, utilisez un symbole

Ruby utilise des symboles et maintient une table de symboles pour les contenir. Les symboles sont des noms – noms de variables d’instance, noms de méthodes, noms de classes. Donc, s’il existe une méthode appelée control_movie, il y a automatiquement un symbole: control_movie. Ruby est interprété, il garde donc sa table de symboles à portée de main en tout temps. Vous pouvez savoir ce qu’il contient à tout moment en appelant Symbol.tous les symboles.
Un objet Symbole est créé en préfixant un opérateur, une chaîne, une variable, une constante, une méthode, une classe, un nom de module avec deux points. L’objet symbole sera unique pour chaque nom différent, mais ne fera pas référence à une instance particulière du nom, pendant la durée de l’exécution d’un programme. Ainsi, si Fred est une constante dans un contexte, une méthode dans un autre et une classe dans un troisième, le Symbole : Fred sera le même objet dans les trois contextes.

Ceci peut être illustré par ce programme simple – p039xsymbol.rb:

La sortie lorsque j’ai exécuté le programme sur mon PC était:

Voici un autre exemple – p039xysymbol.rb:

La sortie est :

Dans cet exemple, : yes est un symbole. Les symboles ne contiennent pas de valeurs ou d’objets, comme le font les variables. Au lieu de cela, ils sont utilisés comme nom cohérent dans le code. Par exemple, dans le code précédent, vous pouvez facilement remplacer le symbole par une chaîne, comme dans l’exemple – p039xyzsymbol.rb

Cela donne le même résultat, mais n’est pas aussi efficace. Dans cet exemple, chaque mention de « oui » crée un nouvel objet stocké séparément en mémoire, alors que les symboles sont des valeurs de référence uniques qui ne sont initialisées qu’une seule fois. Dans le premier exemple de code, seul:yes existe, tandis que dans le deuxième exemple, vous vous retrouvez avec les chaînes complètes de ‘yes’ et ‘yes’ prenant de la mémoire.

On peut aussi transformer une Chaîne en Symbole et vice-versa:Les symboles

sont particulièrement utiles lors de la création de hachages et vous souhaitez faire une distinction entre les clés et les valeurs. Veuillez vous référer à l’utilisation de symboles comme clés de hachage pour un exemple pratique.

Fabio Akita un passionné de rails brésilien, également connu en ligne sous le nom de « AkitaOnRails », a écrit cet article exclusif sur les symboles Rubis pour le rubylearning.com des membres comme vous. Lisez l’article, après avoir suivi cette leçon.

Remarque: Le logo Ruby est Copyright (c) 2006, Yukihiro Matsumoto. J’ai fait de nombreuses références à des informations, liées à Ruby, disponibles dans le domaine public (wikis et blogs, articles de divers Gourous Ruby), ma reconnaissance et mes remerciements à tous. Une grande partie du matériel sur rubylearning.com et dans le cours à rubylearning.org est tiré principalement du livre de programmation Ruby, disponible sur l’étagère Pragmatique.

<Plages/TOC/Hachages >