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 le variabili?
Grazie.
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 le variabili?
Grazie.
Risposte:
Le variabili e i 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 una sola copia di un simbolo. Quindi, se hai
x = :my_str
y = :my_str
:my_str
verrà creata una sola volta, e x
e y
scegliere la stessa area di memoria. D'altra parte, se hai
x = "my_str"
y = "my_str"
una stringa contenente my_str
verrà creato due volte , ed x
e y
punterà a istanze diverse.
Di conseguenza, i simboli sono spesso usati come l'equivalente degli enum in Ruby, così come le chiavi di un dizionario (hash).
#mySymbol
.
Symbol in Ruby è fondamentalmente 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 in dettaglio.
Di solito, le variabili tendono a essere confuse con le stringhe, ma posso capire che la pensi come una variabile. È comprensibile. Pensare in questo modo:
Lo stato di un giocatore in una partita è rappresentato da un numero. 1 significa vivo, 2 significa incerto, 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 farlo:
if player_status == :alive