LoginSignup
0
0

More than 3 years have passed since last update.

【超初心者向け】ハッシュとシンボルの押さえておきたい最低限の知識

Last updated at Posted at 2020-10-13

配列とハッシュの違い

配列は同じ意味を持つ複数の情報を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)まで連結して記述します。


お疲れ様でした!!
ハッシュとシンボルについての超基礎知識は以上です!
基礎が理解できていないと後々困ると思うので、この機会にぜひ理解が深まればな〜と思います。
わかりにくい点、至らない点ございましたら遠慮なくお知らせください!
それではありがとうございました。

参考

https://qiita.com/ryosuketter/items/257d672eb83210b5f8dc

0
0
0

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