ハッシュ 基礎知識
ハッシュとは、
「データ」とそれに対応する「名前」のセットを要素として持つ値のこと。
複数のデータを持つことのできる値という点は、配列と同じである。
データをバリュー、それに対応する名前をキーと呼ぶ。
ハッシュは順番ではなく、キーで管理する。
キーとバリューで管理する方式をキーバリューストアと呼ぶ。
キーバリューストア
Key: User1 ⇢ Value: Hoge
Key: User2 ⇢ Value: Fuga
ハッシュを用いれば、別々の意味を持つ値を1つにまとめられるため、値同士の関連を示すことができる。
ハッシュ生成方法
ハッシュは、波括弧{}を使って生成する。
変数 = {}
ハッシュは、はじめから要素を持った上で生成できる。
変数 = { キー1 => バリュー1, キー2 => バリュー2, キー3 => バリュー3 }
hash = { :name => "Hoge" }
hash = { name: "Hoge" } # こっちがよく使われる
シンボル
シンボルは、見た目は文字列のように見えるが、実際の中身は数値になっている値のこと。
シンボルの宣言は、文字列の先頭にコロン「:」をつける。
:"文字列"
:文字列 # こっちがよく使われる
コンピューターにとって、
文字列を扱うよりも、数値を扱うほうが処理速度は速い。
処理速度を速くすることと、文字列としての役割も果たせることから、ハッシュのキーには、文字列よりもシンボルを用いることが多い。
ハッシュ生成まとめ
① human1 = { "user1" => "Hoge" }
② human2 = { :user1 => "Hoge" }
③ human3 = { user1: "Hoge" }
③のシンボルを使った記述方法がシンプルで使いやすい。
ハッシュに値を追加
ハッシュは、定義した後から要素を追加することができる。
ハッシュへの要素の追加には、配列で添字を指定するように角括弧[]の中にキーを記述し、値(バリュー)を代入する。
ハッシュ[:追加するキー] = 値
ハッシュの値を取得
ハッシュの持っている値を取得する時は、
対応するキーを角括弧[]の中に記述する
ハッシュ[:取得したい値のキー]
ハッシュの値を変更
要素を追加するときと同様に、
取得の記述に代入演算子で値を代入するように記述する。
ハッシュ[:変更したい値のキー] = 値
指定するキーがハッシュに含まれていれば、そのキーに対応する値を変更できる。
存在しないキーの場合、そのキーと値が新しい要素として追加する。
ハッシュの基礎問題
下記のメソッドを実行した時
puts hash.keys
puts hash.values
ターミナルの出力結果を以下のように表示させる
one
two
three
1
2
3
変数hashを作成するためのコードをシンボルを使って記述する
hash = { one: 1, two: 2, three: 3 }
シンボルを使ったキーの記述方法は、キーの後にコロン:をつけて定義します。
hash = { キー: 値}
ハッシュのキーを取得するにはkeysメソッド、
値を取得するにはvaluesメソッドを使用し取得する。
オブジェクト.keysで、ハッシュに含まれるキーを取得する。
hash = { one: 1, two: 2, three: 3 }
puts hash.keys
one
two
three
オブジェクト.valuesで、ハッシュに含まれる値を取得する。
hash = { one: 1, two: 2, three: 3 }
puts hash.values
1
2
3
まとめ
・ハッシュは、複数のデータを持つことができる。
・「データ」とそれに対応する「名前」のセットを要素として持つことができる。
・宣言は波括弧{}を使う。
・シンボルを使うことが多い。文字列の先頭にコロン「:」をつける。
・データの追加と取得、変更ができる。
・ハッシュのキーを取得するにはkeysメソッド、
値を取得するにはvaluesメソッドを使用し取得することができる。