Mais Ruby: Símbolos (:coisas)

Uma das características mais confusas de Ruby são os símbolos, aquelas “variáveis” que aparecem com “:” antes dela, como no título do post. Em poucas palavras símbolos são, bem, símbolos (ou coisas…) que representam nomes e strings. Diferentemente de strings, cada símbolo é único no programa, não importando quantas vezes é usado. O código abaixo deve deixar mais clara essa diferença:

irb(main):003:0> a = "lauro"
=> "lauro"
irb(main):004:0> b = "lauro"
=> "lauro"
irb(main):005:0> a.object_id
=> -605889808
irb(main):006:0> b.object_id
=> -605900098
irb(main):007:0> a = :lauro
=> :lauro
irb(main):008:0> b = :lauro
=> :lauro
irb(main):009:0> a.object_id
=> 160658
irb(main):010:0> b.object_id
=> 160658
irb(main):011:0>

No código acima, as duas atribuições de strings criaram dois novos objetos, enquanto que no segundo caso, usando símbolos, apenas um objeto é criado.

Essa característica de um símbolo ser único em toda a execução é bastante útil em quando uma string será utilizada várias vezes. Usando símbolos, o consumo de memória pode ser drasticamente reduzido, uma vez que você estará usando o mesmo objeto, sem necessidade de crias várias cópias. Para converter entre strings e símbolos, podem ser usados os métodos to_sym e to_s.

Mais informações:  Understanding Ruby Symbols


  1. Lauro, valeu pela pequena esplicação. Eu sou iniciante em ruby e estava com uma baita de dúvido sobre símblos. Mais, uma vez, obrigado pela explicação.


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s