Duas formas de escrever "a mesma palavra"

Prévia grátis 2 min de leitura

Dois valores, mesmas letras, objetos diferentes

"name"
:name

Os dois guardam as letras n-a-m-e e soam iguais lidos em voz alta. Mas são tipos diferentes de objeto: uma String e um Symbol, cada um com as próprias regras. Este curso cobre o que separa os dois e quando usar cada um.

Sintaxe de symbol: dois pontos na frente

Um literal de symbol é dois-pontos seguido de um nome, sem aspas.

:name
:active
:admin

Essa é toda a sintaxe: dois-pontos logo antes de um identificador válido. Não há aspas porque um symbol não é texto do jeito que uma string é. O resto do curso explica a diferença.

Confirmando duas classes diferentes

O curso Ruby: felicidade do dev mostrou que tudo é objeto e todo objeto tem uma classe. "name" e :name têm classes diferentes.

"name".class    # => String
:name.class     # => Symbol

String cobre texto comum, que um curso mais à frente aborda por inteiro. Symbol é uma classe separada, e as seis aulas restantes cobrem as diferenças práticas que isso cria.

O que eles têm em comum

Primeiro, o que eles têm em comum. Os dois guardam uma sequência de caracteres, os dois podem ser comparados, e um converte no outro. :name == :name e "name" == "name" são ambos true. Nenhum é a escolha errada em geral. São ferramentas para trabalhos diferentes, a escolha de contexto que a aula 4 de Ruby: felicidade do dev descreveu.

O que este curso cobre

  • Aula 1, Duas formas de escrever "a mesma palavra": String e Symbol, duas classes diferentes para o que soa como o mesmo valor (você está aqui)
  • Aula 2, Strings mutáveis, symbols imutáveis: um deles pode mudar no lugar, o outro nunca pode
  • Aula 3, Identidade de objeto: por que todo :name num programa é o mesmo objeto
  • Aula 4, Eficiência de memória e velocidade de comparação: por que essa identidade importa em escala real
  • Aula 5, Quando usar symbols: chaves de hash, identificadores fixos, e onde strings ainda vencem
  • Aula 6, Convertendo entre eles: to_sym e to_s
  • Aula 7, Juntando tudo: um pequeno desafio escolhendo o certo deliberadamente

No final, você vai saber por que código real usa "status" num lugar e :status em outro.

Aula 1 de 7 · grátis

Continue com a aula 2

Strings mutáveis, symbols imutáveis

Mostra como strings mudam no lugar, a diferença entre mutação e reatribuição e por que symbols não mudam.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...