81 votes

Quelle est la différence entre une chaîne et un symbole de Ruby?

Quelle est la différence entre une chaîne et un symbole de Ruby et quand devez-vous utiliser un sur l'autre?

99voto

Robert Gamble Points 41984

La principale différence est que plusieurs symboles représentant une valeur unique sont uniques alors que ce n'est pas vrai avec des chaînes. Par exemple:

irb(main):007:0> :test.object_id
=> 83618
irb(main):008:0> :test.object_id
=> 83618
irb(main):009:0> :test.object_id
=> 83618

3 références pour le symbole :test, tous le même objet.

irb(main):010:0> "test".object_id
=> -605770378
irb(main):011:0> "test".object_id
=> -605779298
irb(main):012:0> "test".object_id
=> -605784948

3 références à la chaîne "test", tous différents objets.

Cela signifie que l'utilisation de symboles peut potentiellement sauver une bonne partie de la mémoire en fonction de l'application. Il est également plus rapide pour comparer des symboles pour l'égalité, car ils sont le même objet, la comparaison des chaînes identiques est beaucoup plus lent depuis la chaîne de valeurs doivent être comparées au lieu de juste l'id d'objet.

Comme lors de l'utilisation, qui, habituellement, j'utilise des cordes pour presque tout, sauf des choses comme des clés de hachage où j'ai vraiment envie d'un identifiant unique, pas une chaîne de caractères.

5voto

nertzy Points 2310

Un supplément de différence entre String et Symbol est qu'un String a beaucoup plus de méthodes pour la manipulation de chaînes, tandis qu'un Symbol est relativement maigre objet.

Consultez la documentation de l' String de la classe et de l' Symbol classe.

-1voto

websch01ar Points 1297

Un symbole est quelque chose que vous utilisez pour représenter les noms et les chaînes de caractères. Vous souhaitez utiliser un symbole quand vous pouvez avoir besoin d'utiliser une chaîne à plusieurs reprises que ce est beaucoup plus facile et plus productif.

Et je viens de trouver ce par l'intermédiaire de google, qui offre plus de détails: Ici, vous allez

-1voto

vasu Points 31

symbole immuable et la chaîne sont mutables.

lorsque nous avons effectuer toute opération sur les cordes, alors il créer un nouvel objet et de prendre memery. comme nous l'avons effectuer une plus grande et plus l'opération sur la chaîne que l'on consomme de plus en plus de mémoire.

le symbole est un objet qui sont immuables veux dire, si nous effectuer toute opération puis il procède à des changements dans l'objet d'origine, Il ne va pas créer n'importe quel objet, c'est pourquoi il est plus rentable.

pour plus d'informations, vous pouvez cliquez ici

-2voto

Nitesh Points 51

Les chaînes sont Mutables , les Symboles arre immuable
Note:Mutable objets peuvent être modifiés après la cession, tandis que des objets immuables ne peut être écrasé http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X