動画

Hash Tableに関して動画で学んだ。

Ruby で Hash

class Hash (Ruby 3.1 リファレンスマニュアル)

Object#hash ハッシュの格納に用いられるハッシュ値の計算

基本的には immutable なオブジェクトをハッシュのキーとして渡す。

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

Ruby のハッシュは順序が保証されている。

ハッシュに含まれる要素の順序が保持されるようになりました。ハッシュにキーが追加された順序で列挙します。

Hash#rehash (Ruby 3.1 リファレンスマニュアル)

キーのハッシュ値を再計算します。

キーになっているオブジェクトの内容が変化した時など、ハッシュ値が変わってしまった場合はこのメソッドを使ってハッシュ値を再計算しない限り、そのキーに対応する値を取り出すことができなくなります。

a = [ "a", "b" ]
h = { a => 100 }

p h[a]       #=> 100

a[0] = "z"
p h[a]       #=> nil

h.rehash
p h[a]       #=> 100

Object#hash (Ruby 3.1 リファレンスマニュアル)

オブジェクトのハッシュ値を返します。

ハッシュ値は Integer で返される。

self.hash #=> 274206508191665006
:a.hash #=> 845888517703129642
"a".hash #=> -2437820742663061821
nil.hash #=> -1414713045709870610