配列とハッシュの違い
配列は同じ意味を持つ複数の情報を1つにまとめたもので、ハッシュは関係のある複数の情報を1つにまとめたもの
ハッシュ
変数 = { キー1 => バリュー1, キー2 => バリュー2, キー3 => バリュー3 }
・別々の意味を持つ値を1つにまとめることができるので、複数の関係性のある値を管理するときに用いる
・「データ」とそれに対応する「名前」のセットを要素として持つ
・ハッシュではデータをバリュー、名前をキーという
# ハッシュのキーに文字列を使用した場合
hash1 = { "name" => "nick", "age" => 30, "country" => "UK" }
#シンボル
・ハッシュのキーに数値として用いられるもの
・見た目は文字列のように見えるが実際の中身は数値である
・書き方は2種類あるがどちらも実態は同じ
・hash3が一番シンプルでよく使用される
# ハッシュのキーにシンボルを使用した場合
hash2 = { :name => "nick", :age => 30, :country => "UK" }
hash3 = { name: "nick", age: 30, country: "UK" }
⚠️コンピュータは文字列より数値の方が処理速度が早くなるため
シンボルの方がよく使用される
ここまでで超基礎の部分はクリアです!!
シンボルで書かれたハッシュに慣れるのがいいかと思いますが、理解をした上で使用するようにしましょう。
続いてはハッシュの追加や2重ハッシュの値の取得について説明したいと思います!
もう少し知識を吸収したい方はぜひ続きもご覧ください。
ハッシュへ要素を追加
teacher = { name: "nick"}
teacher[:age] = 30 # ハッシュ[追加するキー] = 値
puts teacher
# 出力結果
# {:name=>"nick", :age=>30}
ハッシュの値を変更
teacher = { name: "nick", age: 30}
teacher[:name] = "john" # ハッシュ[変更したい値のキー] = 値
puts teacher
# 出力結果
# {:name=>"john", :age=>30}
ハッシュの値を取得
teacher = { name: "nick", age: 30}
puts teacher[:name] # ハッシュ[取得したい値のキー]
# 出力結果
# nick
2重ハッシュの値を取得
#変数teacher_data→配列の内部に複数の情報をハッシュとして持つ
#teacher_dataからnameデータを取得する
teacher_data = [
{
teacher: {
profile: {
name: "nick"
}
}
},
{
teacher: {
profile: {
name: "john"
}
}
},
{
teacher: {
profile: {
name: "mac"
}
}
}
]
teacher_data.each do |t|
puts t[:teacher][:profile][:name]
end
# 出力結果
# nick
# john
# mac
【解説】
ブロック引数のtはteacher_dataのtを用いています。
putsのあとはハッシュ[取得したいキー]を取得したいデータ(今回の場合はname)まで連結して記述します。
お疲れ様でした!!
ハッシュとシンボルについての超基礎知識は以上です!
基礎が理解できていないと後々困ると思うので、この機会にぜひ理解が深まればな〜と思います。
わかりにくい点、至らない点ございましたら遠慮なくお知らせください!
それではありがとうございました。