superclass=Object
type=class
library=_builtin
extended=
included=Enumerable

ハッシュテーブル(連想配列とも呼ぶ)のクラス。ハッシュは任意の種類のオブ
ジェクト(キー)から任意の種類のオブジェクト(値)への関連づけを行うことができます。

ハッシュ生成は多くの場合以下のようなリテラル(ハッシュ式)で行われます。

  {a => b, ... }   #aはキー、bは値となる

キーには任意の種類のオブジェクトを用いることができますが、
以下の２つのメソッドが適切に定義してある必要があります。
  * [[m:Object#hash]] ハッシュの格納に用いられるハッシュ値の計算
  * [[m:Object#eql?]] キーの同一性判定

破壊的操作によってキーとして与えたオブジェクトの内容が変化し、Object#hashの返す
値が変わるとハッシュから値が取り出せなくなりますから、
[[c:Array]]
などのインスタンスはキーに向きません。[[m:Hash#rehash]]を参照。

ただし、文字列をキーとして与えた場合は、文字列をコピーし、コピーを更新不可に設定([[m:Object#freeze]])してキーとして
使用します。キーとして使われている文字列を更新しようとすると例外
[[c:TypeError]] が発生するので、rehashを呼ぶ必要性は生じません

ハッシュにはデフォルト値を設定することができます。存在しないキーを探索したときに返す値で、未設定時はnilです。
デフォルト値には値形式とブロック形式があります。
実際にデフォルト値がどのように扱われるかは各メソッドの説明を参照してください。
