Me refiero a esta prueba en about_symbols.rb en Ruby Koans https://github.com/edgecase/ruby_koans/blob/master/src/about_symbols.rb#L26
def test_method_names_become_symbols
symbols_as_strings = Symbol.all_symbols.map { |x| x.to_s }
assert_equal true, symbols_as_strings.include?("test_method_names_become_symbols")
end
# THINK ABOUT IT:
#
# Why do we convert the list of symbols to strings and then compare
# against the string value rather than against symbols?
¿Por qué exactamente tenemos que convertir esa lista en cadenas primero?
Symbol.all_symbols
a una variable y luego probar su inclusión. Los símbolos son más rápidos en la comparación y está evitando convertir miles de símbolos en cadenas.include?
Si especificamos:test_method_names_become_symbols
, no tendríamos que convertir todos esos símbolos en cadenas.:test_method_names_become_symbols
en la comparación lo creará, por lo que la comparación siempre será cierta. Al convertirall_symbols
a cadenas y comparar cadenas, podemos distinguir si el símbolo existía antes de la comparación.