Soy totalmente nuevo en el mundo de Ruby, y estoy un poco confundido con el concepto de Símbolos. ¿Cuál es la diferencia entre símbolos y variables? ¿Por qué no solo usar variables?
Gracias.
Soy totalmente nuevo en el mundo de Ruby, y estoy un poco confundido con el concepto de Símbolos. ¿Cuál es la diferencia entre símbolos y variables? ¿Por qué no solo usar variables?
Gracias.
Respuestas:
Las variables y los símbolos son cosas diferentes. Una variable apunta a diferentes tipos de datos. En Ruby, un símbolo se parece más a una cadena que a una variable.
En Ruby, una cadena es mutable, mientras que un símbolo es inmutable. Eso significa que solo se necesita crear una copia de un símbolo. Por lo tanto, si tienes
x = :my_str
y = :my_str
:my_str
Sólo se creará una vez, y x
y y
apuntan a la misma área de memoria. Por otro lado, si tienes
x = "my_str"
y = "my_str"
una cadena que contiene my_str
se creará dos veces , y x
y y
apuntará a diferentes instancias.
Como resultado, los símbolos se usan a menudo como el equivalente de las enumeraciones en Ruby, así como las claves de un diccionario (hash).
#mySymbol
.
El símbolo en Ruby es básicamente lo mismo que el símbolo en el mundo real. Se usa para representar o nombrar algo.
Los símbolos se usan muy comúnmente para representar algún tipo de estado, por ejemplo
order.status = :canceled
order.status = :confirmed
También puede ver el símbolo como enumeración instantánea. No necesita definir un símbolo, solo lo usa. Este artículo lo explica con gran detalle.
Por lo general, las variables tienden a confundirse con las cadenas, pero puedo entender que pienses que es una variable. Es entendible. Piénsalo de esta manera:
El estado de un jugador en un juego está representado por un número. 1 significa vivo, 2 significa inseguro, 3 significa muerto. Esto se puede reemplazar fácilmente por símbolos. Los símbolos pueden ser :alive
:unsure
y :dead
. Para verificar si un jugador está vivo, en lugar de hacer esto:
if player_status == 1
Podrías hacer esto:
if player_status == :alive