Es una cadena inmutable en tiempo de ejecución.
Cuando se crean dos cadenas, aunque tengan exactamente lo mismo, se crean dos objectos.
En cambio, si se crean dos símbolos, si ese símbolo ya existía con anterioridad, ruby no lo vuelve a crear y recicla el símbolo anterior.
cadena1 = "ruben" cadena2 = "ruben" simbolo1 = :ruben simbolo2 = :ruben puts cadena1.object_id #47319548737540 puts cadena2.object_id #47319548737500 puts simbolo1.object_id #1029788 puts simbolo2.object_id #1029788
A la hora de comparar dos cadenas, ruby debera comparar letra por letra a ver si son iguales.
En cambio con dos simbolos, ruby compara los object_id
¿Cuando se deben utilizar símbolos?
- Cuando no se necesita modificar el string
- Cuando no necesito los métodos del string
- Los simbolos suelen ser utiles para nombres de cosas