Lauro Moura

Mais Ruby: Símbolos (:coisas)

Outubro 25, 2006 · 2 Comentários

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

Categorias: ruby