En la about_symbols.rb Rubí Koan (https://github.com/edgecase/ruby_koans), tengo el siguiente código:Rubí Koan: Constantes convertido en símbolos
RubyConstant = "What is the sound of one hand clapping?"
def test_constants_become_symbols
all_symbols = Symbol.all_symbols
assert_equal true, all_symbols.include?(:"nonexistent")
assert_equal true, all_symbols.include?(:"What is the sound of one hand clapping?")
assert_equal true, all_symbols.include?("What is the sound of one hand clapping?".to_sym)
end
Como es, la prueba pasa.
tres preguntas:
¿Por qué pasar la primera aserción?
:"nonexistent"
no debe incluirse en all_symbols, pero está incluido, así que debo estar malinterpretando algo.Cuando comente la segunda afirmación, la prueba falla porque
"What is the sound of one hand clapping?".to_sym
no está incluido en all_symbols, mientras que:"What is the sound of one hand clapping?"
está incluido. Como son equivalentes, ¿por qué falla la última afirmación? Además, ¿por qué pasa cuando la segunda afirmación no está comentada? (¿Por qué la segunda afirmación tiene algún efecto en la tercera afirmación?)Que yo sepa, el objetivo de este Ruby Koan era demostrar que las constantes se convierten en símbolos (al menos, eso es lo que estoy deduciendo del método nombre). Dado que RubyConstant es una constante con el valor
"What is the sound of one hand clapping?"
, ¿por qué no se incluye"What is the sound of one hand clapping?".to_sym
en la lista de símbolos? La única explicación que se me ocurre es que, contrariamente al nombre del método, las constantes no se convierten en símbolos.
¡Gracias por su ayuda!
La misma pregunta hecha aquí: http: //stackoverflow.com/questions/13295776/ruby-koans-75-test-constants-become-symbols-correct-answer? Lq = 1 – ZenBalance