Я немного смущенно поведением downcase в этом случае, если я изменить мой код из этогоhas_key в сочетании с .downcase не работает должным образом
module FunWithStrings
def count_words
hash = Hash.new
self.split(" ").each do |i|
i.downcase!
if !hash.has_key?(i)
hash[i] = 1
else
hash[i] += 1
end
end
hash
end
end
class String
include FunWithStrings
end
p "test hello test Test wow".count_words
выхода будет собственно с правильным колом { "теста "=> 3," hello "=> 1," wow "=> 1} Если я попытаюсь свести к минимуму код и переключить его на i.downcase! в функции функции has_key он выводит неверные значения. Не знаю, почему.
module FunWithStrings
def count_words
hash = Hash.new
self.split(" ").each do |i|
if !hash.has_key?(i.downcase!)
hash[i] = 1
else
hash[i] += 1
end
end
hash
end
end
class String
include FunWithStrings
end
p "test hello test Test wow".count_words
{ "Тест" => 2, "привет" => 1, "вау" => 1}