Duas formas de escrever "a mesma palavra"
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
:namenum 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_symeto_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.
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.