Articles

RubyLearning.com

< Ranges / TOC / Hashes>

Un símbolo se parece a un nombre de variable, pero tiene un prefijo de dos puntos. Ejemplos -: action,: line_items. No es necesario declarar previamente un símbolo y se garantiza que será único. No hay necesidad de asignar algún tipo de valor a un símbolo, Ruby se encarga de eso por ti. Ruby también garantiza que no importa dónde aparezca en su programa, un símbolo en particular tendrá el mismo valor.

Alternativamente, puede considerar que los dos puntos significan «cosa llamada», por lo que :id es » la cosa llamada id.»También se puede pensar en :id como el nombre de la variable id, y plain id como el valor de la variable.

Un símbolo es el objeto Ruby más básico que puedes crear. Es sólo un nombre y una identificación interna. Los símbolos son útiles porque un nombre de símbolo dado se refiere al mismo objeto en todo un programa Ruby. Los símbolos son más eficientes que las cadenas. Dos cadenas con el mismo contenido son dos objetos diferentes, pero para cualquier nombre de pila solo hay un objeto de símbolo. Esto puede ahorrar tiempo y memoria.

Consulte el ejemplo: p039symbol.rb debajo

La salida cuando ejecuté el programa en mi PC fue:

Por lo tanto, ¿cuándo usamos una cadena frente a un símbolo?

  • Si el contenido (la secuencia de caracteres) del objeto es importante, utilice una cadena
  • Si la identidad del objeto es importante, utilice un símbolo

Ruby utiliza símbolos y mantiene una Tabla de símbolos para mantenerlos. Los símbolos son nombres: nombres de variables de instancia, nombres de métodos, nombres de clases. Así que si hay un método llamado control_movie, automáticamente hay un símbolo: control_movie. Ruby está interpretado, por lo que mantiene su Tabla de símbolos a mano en todo momento. Puedes averiguar qué hay en él en cualquier momento llamando a Symbol.all_symbols.
Un objeto de símbolo se crea prefijando un operador, cadena, variable, constante, método, clase, nombre de módulo con dos puntos. El objeto símbolo será único para cada nombre diferente, pero no se refiere a una instancia particular del nombre, durante la duración de la ejecución de un programa. Por lo tanto, si Fred es una constante en un contexto, un método en otro y una clase en un tercero, el Símbolo :Fred será el mismo objeto en los tres contextos.

Esto se puede ilustrar con este sencillo programa-p039xsymbol.rb:

La salida, cuando me encontré con el programa en mi PC fue:

Aquí hay otro ejemplo – p039xysymbol.rb:

El resultado es:

En este ejemplo :sí, es un símbolo. Los símbolos no contienen valores u objetos, como las variables. En su lugar, se usan como un nombre consistente dentro del código. Por ejemplo, en el código anterior podría reemplazar fácilmente el símbolo con una cadena, como en el ejemplo – p039xyzsymbol.rb

Esto da el mismo resultado, pero no es tan eficiente. En este ejemplo, cada mención de » sí » crea un nuevo objeto almacenado por separado en la memoria, mientras que los símbolos son valores de referencia únicos que solo se inicializan una vez. En el primer ejemplo de código, solo existe :yes, mientras que en el segundo ejemplo termina con las cadenas completas de ‘yes’ y ‘yes’ ocupando memoria.

también podemos transformar una Cadena en un Símbolo y viceversa:Los símbolos

son particularmente útiles al crear hashes y desea distinguir entre claves y valores. Por favor, consulte Usar Símbolos como Claves Hash para ver un ejemplo práctico.

Fabio Akita, un entusiasta brasileño de los Raíles, también conocido en línea como «AkitaOnRails», escribió este artículo exclusivo sobre Símbolos Ruby para el rubylearning.com miembros como tú. Lea el artículo, después de haber pasado por esta lección.

Nota: El Logotipo de Ruby es Copyright (c) 2006, Yukihiro Matsumoto. He hecho extensas referencias a información, relacionada con Ruby, disponible en el dominio público (wikis y blogs, artículos de varios Gurús de Ruby), mi reconocimiento y agradecimiento a todos ellos. Gran parte del material en rubylearning.com y en el curso de rubylearning.org se extrae principalmente del libro Ruby de programación, disponible en la estantería Pragmatic Book.

<Rangos | TOC | Hash>