Beide Antworten oben sind richtig, aber angesichts der obigen Frage von Karthik dachte ich, ich würde einen Test veröffentlichen, der zeigt, wie man ein Symbol genau an die include
Methode übergeben kann
def test_you_create_a_new_symbol_in_the_test
array_of_symbols = []
array_of_symbols << Symbol.all_symbols
all_symbols = Symbol.all_symbols.map {|x| x}
assert_equal false, array_of_symbols.include?(:this_should_not_be_in_the_symbols_collection) #this works because we stored all symbols in an array before creating the symbol :this_should_not_be_in_the_symbols_collection in the test
assert_equal true, all_symbols.include?(:this_also_should_not_be_in_the_symbols_collection) #This is the case noted in previous answers...here we've created a new symbol (:this_also_should_not_be_in_the_symbols_collection) in the test and then mapped all the symbols for comparison. Since we created the symbol before querying all_symbols, this test passes.
end
Ein zusätzlicher Hinweis zu den Koans: Verwenden Sie puts
Anweisungen sowie benutzerdefinierte Tests, wenn Sie nichts verstehen. Zum Beispiel, wenn Sie sehen:
string = "the:rain:in:spain"
words = string.split(/:/)
und keine Ahnung haben, was sein words
könnte, fügen Sie die Zeile hinzu
puts words
und führen Sie rake
die Befehlszeile aus. Ebenso können Tests wie der oben hinzugefügte hilfreich sein, um einige der Nuancen von Ruby zu verstehen.
Symbol.all_symbols
einer Variablen zuzuweisen und dann auf Aufnahme zu testen. Symbole sind im Vergleich schneller und Sie vermeiden, Tausende von Symbolen in Zeichenfolgen umzuwandeln.