Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 5, 2023 09:48 pm GMT

Symbols vs Strings no Ruby

O que smbolo(symbol) no Ruby?

Duas das perguntas mais comuns feitas aos desenvolvedores Ruby so Qual a diferena entre uma string e um smbolo? e Por que voc usaria um smbolo em vez de uma string?

Sintaticamente, strings so qualquer texto escrito entre aspas (isto uma string, isso tambm, isso tambm!), enquanto um smbolo um texto que comea com dois pontos (:smbolo). Mas strings e smbolos tm funcionalidades diferentes que os tornam teis para diferentes propsitos na programao.

Os smbolos Ruby so definidos como objetos de valor escalar usados como identificadores, mapeando strings imutveis para valores internos fixos. Essencialmente, isso significa que os smbolos so strings imutveis.

Na programao, um objeto imutvel algo que no pode ser alterado. Quando voc cria um objeto imutvel, ele permanecer o mesmo at ser destrudo

img1

No exemplo acima, consegui alterar o valor da varivel string concatenando uma nova string a ela. Quando tentei fazer isso com a varivel sym, recebi uma mensagem de erro de mtodo indefinido, porque os smbolos so imutveis.

Porque usar symbols ao invs de strings?

A natureza imutvel dos smbolos os torna muito valiosos na programao porque objetos mutveis podem causar bugs difceis de detectar. Como os smbolos permanecem os mesmos, us-los ajuda a evitar esse problema.

Outra diferena significativa entre strings e smbolos como eles so armazenados na memria. Confira os IDs de objeto no exemplo abaixo

img2

Cada vez que uma string escrita, ela cria um novo objeto com um novo lugar na memria, mesmo que a string seja textualmente idntica a uma string existente. No entanto, como os smbolos so imutveis, eles sempre se referem ao mesmo objeto e ao mesmo lugar na memria.

img3

Strings podem prejudicar o desempenho de um programa se objetos string forem criados e destrudos repetidamente quando o mesmo objeto poderia ter sido reutilizado em seu lugar. Por esse motivo, um programa que usa smbolos sobre strings (quando possvel) ser executado com mais eficincia.

Quando usar symbols?

O falecido guru do Ruby, Jim Weirich (esse cara era realmente um programador incrvel. Ele inventou o Rack!) resumiu os diferentes usos para strings e smbolos: Se o contedo textual do objeto for importante, use uma String. Se a identidade do objeto for importante, use um smbolo.

Os smbolos so teis quando voc precisa de um identificador exclusivo para conter um valor, como uma chave em um hash. Se voc usar strings como chaves de hash, ter os mesmos problemas com mutabilidade e memria (diferentes objetos/lugares na memria)

img4

As variveis pessoa e pessoa2 tm chaves textualmente idnticas de "name", mas essas chaves tm IDs de objeto diferentes e ocupam lugares diferentes na memria. Isso seria um pesadelo em um programa de escala maior!

O uso de smbolos com hash keys elimina esse problema.

img5

Todas as chaves :name referem-se ao mesmo objeto na memria.

Observe a sintaxe diferente para usar smbolos como chaves de hash nas linhas 001 e 002. Isso apenas um pouco de doce sinttico do Ruby; as teclas so funcionalmente as mesmas. Em ambas as construes, voc acessaria o valor com pessoa[:name] ou pessoa2[:name].

Smbolos so objetos que podem ser passados como qualquer outro objeto Ruby. Eles tambm podem ser usados para passar valores para mtodos, como em mtodos getter e setter em definies de classe.

img6

Estes so apenas alguns exemplos de quando usar smbolos em Ruby. Em caso de dvida, se um valor no precisar ser alterado, use um smbolo em vez de uma string.

Traduo do artigo da autora Lindsay Criswell: https://medium.com/@lcriswell/ruby-symbols-vs-strings-248842529fd9


Original Link: https://dev.to/fabianoflorentino/symbols-vs-strings-no-ruby-54i2

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To