##ハッシュとは?
小さなデータの集まり。
番号ではなくキー(テキスト)と呼ばれるデータを扱うことによって管理できる。→配列との違い。配列はインデックスと呼ばれる番号を指定して管理する。
ハッシュは複数のデータをまとめて扱う。
###見方
キー、ハッシュの順です。
hash_sample = ["キー" => "ハッシュ","キー" => "ハッシュ","キー" => "ハッシュ","キー" => "ハッシュ",]
#こんな感じで省略可能↓
hash_sample = [キー:"ハッシュ",キー:"ハッシュ",キー:"ハッシュ",キー:"ハッシュ",キー:"ハッシュ",キー:"ハッシュ"]
##ハッシュの機能
###番号ではなくキー(テキスト)を指定してデータを取り出せる。
例
hash_sample = ["ああ"、"いい"、"うう"] #ああ、いい、ううがキー
puts hash_sample["ああ"] =>"ああ" #ああを直接指定して取り出せる。
###キーを変数で定義しても取り出せる。
例
hash_sample = ["ああ"、"いい"、"うう"] #ああ、いい、ううがキー
n = いい
puts hash_sample[n] =>"いい" #いいを取り出せる。
###lengthメソッドを使ってデータの個数を指定できる。
hash_sample = ["ああ"、"いい"、"うう"] #ああ、いい、ううがキー
puts hash_sample.length =>3 #hash_sampleのデータの個数を出力できる。
###簡単にデータの追加、データの更新、データの削除ができる。
####追加
enemies = {"ザコ" => "スライム", "中ボス" => "ドラゴン", "ラスボス" => "魔王"}
enemies["ザコ2"] = "メタルモンスター" #ハッシュを追加
p enemies <= {"ザコ" => "スライム", "中ボス" => "ドラゴン", "ラスボス" => "魔王","ザコ2" => "メタルモンスター"}
####更新
enemies = {"ザコ" => "スライム", "中ボス" => "ドラゴン", "ラスボス" => "魔王"}
enemies["中ボス"] = "レッドドラゴン" #ハッシュを更新
puts enemies.length => {"ザコ" => "スライム", "中ボス" => "レッドドラゴン", "ラスボス" => "魔王"}
####削除
削除の場合は[]ではなく()でくくる。
enemies = {"ザコ" => "スライム", "中ボス" => "ドラゴン", "ラスボス" => "魔王"}
enemies.delete("ザコ") ##ハッシュを削除
p enemies => {"中ボス" => "ドラゴン", "ラスボス" => "魔王"}
##ハッシュの使い所
###データベースとやり取りするデータの処理
横(レコード)を取り出したい際はハッシュで処理すると楽。
縦列を取り出したい際には配列が楽。
Left align | Right align | Center align |
---|---|---|
This | This | This |
column | column | column |
will | will | will |
be | be | be |
left | right | center |
aligned | aligned | aligned |
###APIとやり取りするデータの処理
##ハッシュをループ処理で取り出す方法
###ハッシュの場合はeach_valueメソッドを使う。
skills = {"職業" => "戦士", "体力" => 100, "魔法力" => 200, "ゴールド" => 380}
skills.each_value do |skill|
puts "#{skill}"
end
###each_valueメソッドで変数を複数指定した場合
skills = {"職業" => "戦士", "体力" => 100, "魔法力" => 200, "ゴールド" => 380}
skills.each_value do |skill,n|
puts "#{skill}は#{n}です"
end
###each_valueメソッドでハッシュの値の合計を計算して出力する場合
points = {"国語" => 70, "算数" => 35, "英語" => 52}
sum = 0
points.each_value do |point|
sum += point
end
puts sum
##ハッシュをソート(整列)させる
###値でソートさせる
apples = [310, 322, 292, 288, 300, 346]
p apples.sort
###値を逆順にソートさせる
apples = [310, 322, 292, 288, 300, 346]
p apples.sort.reverse
###ソートの順番について
ハッシュの先頭のアルファベット、数字で決まる。
漢字が含まれている場合あらかじめ決められている順番になる。
###キーでソートする場合には.to_hメソッドを使う。
to_hメソッド・・・配列をハッシュに変換するメソッド。
math = {"えんどう" => 99, "あだち" => 40, "いいだ" => 12}
p math.sort.to_h
###値(ハッシュ)でソートする
aがキー、bがハッシュでbを選んでいる。
math = {"あだち" => 40, "いいだ" => 12, "えんどう" => 99}
p math.sort_by {|a,b| b }
##シンボルの使い方
シンボルとはコロン:をつけて""なしで表示されているもの。記述が簡単になる。