ハッシュとは
ハッシュとは複数にデータを一つの変数にまとめす事ができるオブジェクトです。
配列も複数のデータをまとめる事ができましたね。
配列についてわからない方はこちらをご覧ください。
それでは、配列とは何が違うのか、ハッシュはデータに対して順番を持っているのに対し、
ハッシュの一番大きな特徴は、ハッシュはキーとそれに対応する値(バリュー)を持っているという事です。
例えば私の名前はゆーいちですがこの場合名前というキーに対応してゆーいちというバリューがあると言い換える事ができます。
ハッシュの定義
それではハッシュを定義していきます。
yuichi = {}
これでハッシュを定義する事ができました。定義の際は{}の中に情報を入れていきます。ただし今はまだ情報が何も入っていない状態です。
ここに私の情報を入れていきたいと思います。
#パターン1
yuichi = {name: "ゆーいち", age: 23, job: "エンジニア"}
#パターン2
yuichi = {"name" => "ゆーいち", "age" => 23, "job" => "エンジニア"}
これで情報を入れる事ができました。先ほども言ったようにハッシュはキーとバリューを持っています。
どちらのパターンもnameというキーに"ゆーいち"という文字列がバリューとして対応しています。
今回パターンを二つ紹介しましたが、パターン2のようにキーを文字列にしハッシュロケットを使って値を書くこともできますが、私はパターン1で書くことをお勧めします。パターン1のように「:」を用いるものをシンボル型といいます。
メリットはコードの記述量が少なくなる他、ハッシュロケットを使うよりも処理が早くなるのでシンボル型を使う事が推奨されています。
値の取得
次に値の取得方法について説明していきます。
yuichi = {name: "ゆーいち", age: 23, job: "エンジニア"}
yuichi[:name]
#=>"ゆーいち"
これでハッシュの中から一つの値を取り出す事ができました。
値を取り出すときはハッシュ名[:キー]と指定する事で取り出す事ができます。
キーの取得
キーだけを取得したい場合はkeysメソッドを使います。
keysメソッドはハッシュの中のキーだけを配列で返します。
yuichi = {name: "ゆーいち", age: 23, job: "エンジニア"}
yuichi.keys
#=>["name", "age", "job"]
配列で返すのでその中から欲しい値だけを取り出す場合は番号を指定してあげる必要がありますね。
値の追加
値を追加、上書きをしていきます。
yuichi = {name: "ゆーいち", age: 23, job: "エンジニア"}
#値の追加
yuichi[:place] = "東京"
#値の上書き
yuichi[:age] = 25
これで追加する事ができました。
値を追加するときも上書きするときも定義の仕方は一緒ですね。
すでにキーを持っている場合は上書きされ、キーがない場合は新しいキーとバリューが追加されます。
最後に
今回はハッシュに関する基本的なことを説明していきました。
今回は私の情報だけをハッシュに入れていきましたが、ほかの人の情報も別のハッシュに入れていくとハッシュがいっぱいになってしましますよね、そう言ったときにその個人の情報をもつ複数のハッシュを配列に入れる事により、管理することもできます。
最後まで読んでいただきありがとうございました。