0
0

More than 3 years have passed since last update.

Ruby ハッシュ 基礎

Last updated at Posted at 2021-03-19

ハッシュ 基礎知識

ハッシュとは、
「データ」とそれに対応する「名前」のセットを要素として持つ値のこと。
複数のデータを持つことのできる値という点は、配列と同じである。

データをバリュー、それに対応する名前をキーと呼ぶ。

ハッシュは順番ではなく、キーで管理する。
キーとバリューで管理する方式をキーバリューストアと呼ぶ。

キーバリューストア

キーバリューストア例
Key: User1  Value: Hoge
Key: User2  Value: Fuga

ハッシュを用いれば、別々の意味を持つ値を1つにまとめられるため、値同士の関連を示すことができる。

ハッシュ生成方法

ハッシュは、波括弧{}を使って生成する。

ハッシュの宣言
変数 = {}

ハッシュは、はじめから要素を持った上で生成できる。

=>を用いてキーとバリューをセットにして記述
変数 = { キー1 => バリュー1, キー2 => バリュー2, キー3 => バリュー3 }
シンボルを用いてキーとバリューをセットにして記述
hash = { :name => "Hoge" }
hash = { name: "Hoge" }  # こっちがよく使われる

シンボル

シンボルは、見た目は文字列のように見えるが、実際の中身は数値になっている値のこと。
シンボルの宣言は、文字列の先頭にコロン「:」をつける。

シンボルの宣言
:"文字列"
:文字列  # こっちがよく使われる

コンピューターにとって、
文字列を扱うよりも、数値を扱うほうが処理速度は速い。
処理速度を速くすることと、文字列としての役割も果たせることから、ハッシュのキーには、文字列よりもシンボルを用いることが多い。

ハッシュ生成まとめ

ハッシュ使い方3選
 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メソッドを使用し取得することができる。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0