<この記事はこんな人におすすめ>
- Rubyのハッシュについて知りたい人
- ハッシュの使い方や省略形を知りたい人
- Ruby入門者
<この記事でわかること>
- ハッシュの書き方
- ハッシュの使い方
- ハッシュの省略形
ハッシュについて
複数の値をまとめて管理する代表的な方法には配列がありますが、ハッシュもあります。ハッシュの基本的なことについて次にまとめておきます。
- 複数の値をまとめて管理する方法がハッシュ
- キーと呼ばれる名前と、値をセットにして管理する
- ハッシュの書き方 {キー1=> 値1, キー2 => 値2}
次のサンプルコードをみてください。
変数examにハッシュが代入されています。”subject”=>”Math”とすることで、値をセットにして扱うことができます。
# 変数examにハッシュを代入してください exam = {"subject"=>"Math", "score"=> 80} # 変数examを出力してください puts exam
ハッシュはひとつの値なので、サンプルコードのように変数に代入して使うこともできます。
ハッシュの要素の「使い方」「更新」「使い方」
要素の使い方
ハッシュの要素を利用するには変数[キー]という形で使います。
次のサンプルコードをみてください。”subject”の値を出力するためには、exam[“subject”]とすればOKです。
exam = {"subject" => "Math", "score" => 80} # キー「"subject"」の値を出力してください puts exam["subject"] #=> Math
要素の更新
要素を更新するには、すでに存在するキーを指定して、そこに新たな値を代入してください。
例えば、”subject”の値を変更する場合はexam[“subject”]に新たな”Science”という文字列を代入しています。これによってもともとあった”Math”という文字列が更新されます。
exam = {"subject" => "Math", "score" => 80} # キー「"subject"」の値を「"Science"」に更新してください exam["subject"] = "Science" # もう一度、キー「"subject"」の値を出力してください puts exam["subject"]
要素の追加
ハッシュに新しく要素を追加したい場合は、新しいキーに新しい値を代入してあげればOKです。
例えば、examという変数に新たに”grade”というキーと、”good”という値を入れたいとします。その場合はexam[“grade”]=”good”という形で新たにキーを作り、値を代入してください。要素が追加されます。
exam = {"subject" => "Math", "score" => 80} # キーが「"grade"」、値が「"good"」の要素を追加してください exam["grade"] = "good" # キー「"grade"」の値を出力してください puts exam["grade"]
シンボルを使ったハッシュの省略形
シンボルを使ったハッシュの書き方
ハッシュはよく使われるためシンボルを使った省略形があります。次のような形です。
exam = {"subject" => "Math", "score" => 80} # キーをシンボルで書き換えてください exam = {:subject => "Math", :score => 80}
シンボルを使ったハッシュ省略形の一般的なルールについて以下にまとめておきます。
- ハッシュは先頭にコロンをつけたシンボルを使って書くことができる
- シンボルはキー部分によく使われる
- 文字列とシンボルは厳密には違うが、基本的には同じように使える
ハッシュの書き方省略形
シンボルを使ったハッシュもさらに省略できます。
exam = {"subject" => "Math", "score" => 80} # 省略した書き方で書き換えてください exam = {subject: "Math", score: 80}
つまり「key =>」は「key :」と省略できるということです。この使い方はよく出てくるので、覚えておいてください。
ちなみに省略形における要素の使い方ですが、exam[:subject]というように[ ]内をシンボルで記述することに注意してください。
まとめ
というわけで今回は、ハッシュについてまとめておきました。特に次のハッシュの書き方についてはよく確認しておいてくださいね。
#キーが文字列 exam = {"subject" => "Math", "score" => 80} # キーがシンボル exam = {:subject => "Math", :score => 80} # キーが省略系 exam = {subject: "Math", score: 80}