Sono totalmente nuovo nel mondo di Ruby, e sono un po 'confuso con il concetto di Simboli. Qual è la differenza tra simboli e variabili? Perché non usare solo variabili?
Grazie.
Variabili e simboli sono cose diverse. Una variabile punta a diversi tipi di dati. In Ruby, un simbolo è più simile a una stringa che a una variabile.
In Ruby, una stringa è mutabile, mentre un simbolo è immutabile. Ciò significa che è necessario creare solo una copia di un simbolo. Quindi, se hai
x = :my_str
y = :my_str
:my_str
verrà creato una sola volta e x
e y
puntano alla stessa area di memoria. D'altra parte, se hai
x = "my_str"
y = "my_str"
una stringa contenente my_str
verrà creata due volte e x
e y
punteranno a istanze diverse.
Di conseguenza, i simboli vengono spesso utilizzati come equivalenti alle enumerazioni in Ruby, così come le chiavi per un dizionario (hash).
Il simbolo in Ruby è praticamente la stessa cosa del simbolo nel mondo reale. È usato per rappresentare o nominare qualcosa.
I simboli sono molto comunemente usati per rappresentare un qualche tipo di stato, per esempio
order.status = :canceled
order.status = :confirmed
Puoi anche guardare il simbolo come enum istantaneo. Non è necessario definire un simbolo, basta usarlo. Questo articolo lo spiega dettagliatamente.
Di solito, le variabili tendono a essere confuse con le stringhe, ma posso capire che la pensi come una variabile. È comprensibile. Pensaci in questo modo:
Lo stato di un giocatore in una partita è rappresentato da un numero. 1 significa vivo, 2 significa insicuro, 3 significa morto. Questo può essere facilmente sostituito da simboli. I simboli potrebbero essere :alive
:unsure
e :dead
. Per verificare se un giocatore è vivo, invece di farlo:
if player_status == 1
Potresti fare questo:
if player_status == :alive
Leggi altre domande sui tag ruby