あなたの問題がどこにあるのか正確にはわかりませんが、これが役立つことを願っています。
{key, value} メソッドでハッシュが機能しませんか?
はい、そうです。ラインで
words.each { |x| frequencies[x] += 1 }
ハッシュが呼び出されfrequencies
、キーはx
. そのキーの値は式によって返されますfrequencies[x]
。
配列と同じですが、整数の代わりに文字列をインデックスとして使用します。は で識別されるdata[2]
配列の要素に格納される値であり、は で示されるハッシュの要素に格納される値です。data
2
frequencies[x]
frequencies
x
+=
は Ruby の省略形として通常の意味を持つため、var += 1
と同じですvar = var + 1
。
で識別さfrequencies[x] += 1
れるfrequencies[x] = frequencies[x] + 1
ハッシュ要素の現在の値に 1 を追加しx
ます。
パズルの最後のピースは、frequencies
作成された方法です。通常、割り当てられていないハッシュ要素にアクセスすると、 が返されますnil
。method がないため+=
、通常、 を使用するとエラーが発生します。しかし、 using を使用すると、デフォルト値がゼロのハッシュが作成されるため、このハッシュの存在しない要素はではなくとして評価され、要素を初めてインクリメントしようとすると、すべてが正常に機能するようになります。undefined method '+' for nil:NilClass
NilClass#+
Hash.new(0)
0
nil