¿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?
Respuesta
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.
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
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.
Gracias troelskn, sí. Supongo que el matiz del símbolo frente a "literal" es útil al leer el código. – Jerome
Eche un vistazo a la publicación Ruby symbols.
Buen artículo, gracias khelll – Jerome
Quizás también desee consultar http://www.randomhacks.net/articles/2007/01/20/13-ways-of-looking-at-a-ruby-symbol –
- 1. ¿Para qué son esos símbolos de tubería en Ruby?
- 2. ¿std :: stack expone iteradores?
- 3. ¿Por qué no es una buena idea crear dinámicamente muchos símbolos en ruby?
- 4. ¿Por qué no hay más proyectos que utilicen símbolos de Ruby en lugar de cadenas?
- 5. ruby: ordena la matriz de símbolos
- 6. TDD: ¿Qué métodos expone para las pruebas unitarias?
- 7. ¿Por qué Ruby tiene Numeric.new?
- 8. Ruby Exceptions - ¿Por qué "else"?
- 9. ¿Por qué Clojure tiene "palabras clave" además de "símbolos"?
- 10. ¿Por qué las funciones estáticas eliminan símbolos indefinidos en Xcode?
- 11. enormes ejecutables debido a los símbolos de depuración, ¿por qué?
- 12. ¿Por qué recibo un error de búsqueda de símbolos?
- 13. ¿Por qué los motores de búsqueda ignoran los símbolos?
- 14. ¿Por qué Ruby no Symbol # = ~ (operador de concordancia regex)?
- 15. ¿Hay un Python equivalente a los símbolos de Ruby?
- 16. Usar símbolos como argumentos para los métodos de ruby
- 17. Algunas preguntas simples de Ruby: iteradores, bloques y símbolos
- 18. ¿por qué ruby scanf es tan lento?
- 19. Ruby: ¿por qué puts llama a_ary?
- 20. ¿Por qué Object.class == Class en Ruby?
- 21. ¿Por qué debería evitar @@ class_variables en Ruby?
- 22. ¿Por qué `a = a`` nil` en Ruby?
- 23. En Ruby, ¿por qué nil.id devuelve 4?
- 24. Ruby Enumerator - ¿Por qué terminar con excepción?
- 25. ¿Cómo se accede a la tabla de símbolos en Ruby?
- 26. ¿POR QUÉ WCF 'apropiadamente' no consume/expone los tipos abstractos cuando está alojado como un servicio web?
- 27. ¿Qué significan estos símbolos de git?
- 28. ¿Qué es una tabla de símbolos?
- 29. ¿Qué significan los símbolos en preg_match?
- 30. ¿Por qué no son los argumentos para File.new símbolos en lugar de cadenas?
Gracias a todos. Stackoverflow es brillante, ¿no ?, y sobre todo por las personas que lo usan. – Jerome