0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

備忘録(Ruby:基礎文法:ハッシュ)

0
Posted at

配列による管理の限界

配列は複数の情報を順番で管理することは得意
複数の情報同士の関係性を示すことには向いていない
関係のある複数の値を管理するときには、ハッシュを用いる

ハッシュ

「データ」とそれに対応する「名前」のセットを要素として持つ値
ハッシュにおいては、データをバリュー、それに対応する名前をキーと呼ぶ
ハッシュは順番ではなく、キーで管理する(キーバリューストア)
ハッシュを用いれば、別々の意味を持つ値を1つにまとめられるため、値同士の関連を示すことができる

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

# ハッシュの生成は以下のようにハッシュロケット=>を用いてキーとバリューをセットにして記述
変数 = { キー1 => バリュー1, キー2 => バリュー2, キー3 => バリュー3 }

シンボル

見た目は文字列のようだが、実際の中身は数値になっている値
シンボルの宣言は、文字列の先頭にコロン:をつける
シンボルをハッシュのキーに用いる場合は、文字列をキーにする場合と同じ書き方と、
シンボルをキーにするときだけ使用できる書き方の2種類がある

# シンボルの宣言
# 以下はどちらも同じ値
:"文字列"
:文字列  # よく使用される


# 以下はどちらも同じ要素
hash = { :name => "Taro" }
hash = { name: "Taro" }  # よく使用される

# 例
student = { "name" => "John", "age" => 10 }
teacher = { name: "Mike", age: 25 }

puts student
puts teacher

ハッシュに値を追加

配列で添字を指定するように角括弧[]の中にキーを記述し、値を代入

# ハッシュへ要素を追加
ハッシュ[追加するキー] = 

# 例
student = { "name" => "John", "age" => 10 }
teacher = { name: "Mike", age: 25 }

teacher[:subject] = "English"

puts student
puts teacher

ハッシュの値を取得

取得の際に使うのはその値に対応するキー
配列では添字を指定していたが、ハッシュではキーを指定

# ハッシュの要素を取得
ハッシュ[取得したい値のキー]

# 例
student = { "name" => "John", "age" => 10 }
teacher = { name: "Mike", age: 25 }

teacher[:subject] = "English"

puts student
puts teacher
puts teacher[:name]

# puts teacher[:name]でMikeが出力される
# 指定したキーに対応する値が取得できる

ハッシュの値を変更

要素を追加するときと同様に、取得の記述に代入演算子で値を代入するように記述
指定するキーがハッシュに含まれていれば、そのキーに対応する値を変更
存在しないキーであれば、そのキーと値が新しい要素として追加

# ハッシュの要素を変更
ハッシュ[変更したい値のキー] = 

# 例
student = { "name" => "John", "age" => 10 }
teacher = { name: "Mike", age: 25 }

teacher[:subject] = "English"
teacher[:name] = "Emma"

puts student
puts teacher
puts teacher[:name]

# 名前を持つキーnameの値がMikeからEmmaに変更され、
# puts teacher[:name]の出力は「Emma」になる

ハッシュによる管理の限界

「名前」「年齢」という同じ構造のまとまり自体が増えていくと、ハッシュを代入する変数を増やすことになり、hash1, hash2, ...のような変数名に番号がつく無駄の多い管理になってしまう

ハッシュを利用して複数の変数をまとめても、そのハッシュ自身を代入する変数が増えてしまい本末転倒

そこで配列と組み合わせて値を管理する(配列の要素にハッシュを追加して管理する)

# からの配列を作成する
students = []

# 空の配列studentsにハッシュを追加する
students << {name: "太郎くん", height: 160}
students << {name: "花子さん", height: 155}
students << {name: "次郎くん", height: 165}
students << {name: "春子さん", height: 150}

puts students[1][:name]
# 配列の添字[1]{name: "花子さん", height: 155}のなかの、name:を指定しているので
# 値の、花子さんと出力される

0
0
2

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?