Quelle est la différence entre une chaîne et un symbole de Ruby et quand devez-vous utiliser un sur l'autre?
Réponses
Trop de publicités?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.
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.
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
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
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/