我收到一个错误,'+'未定义为nil:NilClass。我假设这是来自
index[word] += 1
但我不确定为什么。我正在使用1.9.3。
如果有人可以提供帮助,我们将不胜感激! 感谢
def most_common_words(text)
text_split = text.split(' ')
index = {}
text_split.each do |word|
puts index
puts word
if (index[word]
index[word] += 1 )
else(
index[word] = 1 )
end
end
index.to_a.sort[0..2]
答案 0 :(得分:1)
评论勉强正确。
它忽略了实际问题,即您的格式错误的if
语句。
如果您修复语法,代码将按照编写的方式工作:
index = {}
%w[ohai kthx ohai].each do |word|
if index[word]
index[word] += 1
else
index[word] = 1
end
end
puts index.inspect
=> {"ohai"=>2, "kthx"=>1}
或者您可以提供默认值:
index2 = Hash.new(0)
%w[ohai kthx ohai].each do |word|
index2[word] += 1
end
puts index2.inspect
=> {"ohai"=>2, "kthx"=>1}
答案 1 :(得分:0)
您应该能够将此代码简化为更少的行。它会让它看起来更漂亮,更清洁。
def most_common_words(text)
text_split = text.split(' ')
index = Hash.new(1)
text_split.each do |key, value|
puts "The key is #{key} and the value is #{value}"
index[key] += 1
end
end
index.to_a.sort[0..2]