我不确定您的问题到底出在哪里,但希望这会有所帮助。
{key, value} 方法不能进行哈希处理吗?
是的,它确实。在行
words.each { |x| frequencies[x] += 1 }
哈希被调用frequencies,键是x. 该键的值由表达式返回frequencies[x]。
它就像一个数组,但使用字符串作为索引而不是整数。是存储在由标识data[2]的数组元素中的值,而是存储在由指示的散列元素中的值。data2frequencies[x]frequenciesx
+=具有其通常含义为 Ruby 缩写,因此var += 1与var = var + 1.
frequencies[x] += 1也是如此frequencies[x] = frequencies[x] + 1:它将 . 标识的散列元素的当前值加一x。
拼图中的最后一块是frequencies已创建的方式。通常,访问尚未分配的哈希元素会返回nil. 由于没有方法,使用+=通常会引发错误。但是 using创建了一个默认值为0 的散列,因此该散列中不存在的元素的计算结果为而不是,现在当您第一次尝试增加一个元素时,一切正常。undefined method '+' for nil:NilClassNilClass#+Hash.new(0)0nil