O que é um símbolo em Ruby?

38

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 apenas usando variáveis?

Obrigado.

    
por wassimans 07.12.2010 / 19:36
fonte

3 respostas

62

Variáveis e símbolos são coisas diferentes. Uma variável aponta para diferentes tipos de dados. Em Ruby, um símbolo é mais parecido com uma string do que com 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 e x e y apontarão para a mesma área de memória. Por outro lado, se você tiver

x = "my_str"
y = "my_str"

uma string contendo my_str será criada duas vezes , e x e y apontarão para instâncias diferentes.

Como resultado, os símbolos são frequentemente usados como o equivalente a enums em Ruby, bem como chaves para um dicionário (hash).

    
por 07.12.2010 / 19:47
fonte
15

O símbolo em Ruby é basicamente a mesma coisa que um símbolo no mundo real. É usado para representar ou nomear algo.

Os símbolos são muito usados para representar algum tipo de estado, por exemplo

order.status = :canceled
order.status = :confirmed

Você também pode ver o símbolo como enum instantâneo. Você não precisa definir um símbolo, basta usá-lo. Este artigo explica em detalhes.

    
por 08.12.2010 / 05:05
fonte
0

Normalmente, as variáveis tendem a ser confundidas com strings, mas eu posso entender você pensando como 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

    
por 17.07.2017 / 18:22
fonte

Tags