Sou totalmente novo no mundo Ruby e estou um pouco confuso com o conceito de Símbolos. Qual é a diferença entre Símbolos e Variáveis? Por que não usar apenas variáveis?
Obrigado.
Sou totalmente novo no mundo Ruby e estou um pouco confuso com o conceito de Símbolos. Qual é a diferença entre Símbolos e Variáveis? Por que não usar apenas variáveis?
Obrigado.
Respostas:
Variáveis e símbolos são coisas diferentes. Uma variável aponta para diferentes tipos de dados. No Ruby, um símbolo é mais como uma string do que uma variável.
Em Ruby, uma string é mutável, enquanto um símbolo é imutável. Isso significa que apenas uma cópia de um símbolo precisa ser criada. Assim, se você tiver
x = :my_str
y = :my_str
:my_str
será criado apenas uma vez x
e y
apontará para a mesma área de memória. Por outro lado, se você tiver
x = "my_str"
y = "my_str"
uma cadeia contendo my_str
será criado por duas vezes , e x
e y
irá apontar para casos diferentes.
Como resultado, símbolos são frequentemente usados como o equivalente a enumerações em Ruby, bem como chaves de um dicionário (hash).
#mySymbol
.
Símbolo em Ruby é basicamente a mesma coisa que símbolo no mundo real. É usado para representar ou nomear algo.
Os símbolos são muito comumente usados para representar algum tipo de estado, por exemplo
order.status = :canceled
order.status = :confirmed
Você também pode ver o símbolo como enumeração instantânea. Você não precisa definir um símbolo, apenas o usa. Este artigo explica detalhadamente.
Geralmente, variáveis tendem a ser confundidas com strings, mas eu posso entender que você pensa que é uma variável. É compreensível. Pense desta maneira:
O status de um jogador em um jogo é representado por um número. 1 significa vivo, 2 significa inseguro, 3 significa morto. Isso pode ser facilmente substituído por símbolos. Os símbolos podem ser :alive
:unsure
e :dead
. Para verificar se um jogador está vivo, em vez de fazer isso:
if player_status == 1
Você pode fazer isso:
if player_status == :alive