2010-02-21 8 views
12

¿Por qué Ruby expone símbolos para uso explícito? ¿No es ese el tipo de optimización que generalmente maneja el intérprete/compilador?¿Por qué Ruby expone símbolos?

+0

Gracias a todos. Stackoverflow es brillante, ¿no ?, y sobre todo por las personas que lo usan. – Jerome

Respuesta

9

Parte del problema es que las cadenas de Ruby son mutables. Como cada cadena que asigna Ruby debe ser independiente (no puede almacenar en la memoria caché las cortas/comunes), es conveniente tener un tipo Symbol para permitir que el programador tenga lo que son cadenas esencialmente inmutables y eficientes desde el punto de vista de la memoria.

Además, comparten muchas características con enum, pero con menos dolor para el programador.

+0

Gracias zenzan, lo entiendo ahora. Creo que ya tenía una idea razonable sobre cómo y por qué de los símbolos en Ruby, pero como dices que es la mutabilidad, las cuerdas son un objeto de primera clase que hace la diferencia. Entonces, las cosas que parecen literales no son realmente tratadas como tales por el intérprete. – Jerome

4

Los símbolos de Ruby se utilizan en lugar de las constantes de cadena en otros idiomas similares. Además del beneficio de rendimiento, se pueden usar para distinguir semánticamente entre datos de cadena y un símbolo más abstracto. Al ser sintácticamente diferentes, se pueden distinguir claramente en el código.

+0

Gracias troelskn, sí. Supongo que el matiz del símbolo frente a "literal" es útil al leer el código. – Jerome

3

Eche un vistazo a la publicación Ruby symbols.

+0

Buen artículo, gracias khelll – Jerome

+0

Quizás también desee consultar http://www.randomhacks.net/articles/2007/01/20/13-ways-of-looking-at-a-ruby-symbol –

Cuestiones relacionadas