[Ruby]ハッシュについて

Ruby

ハッシュの作り方

enemies = {"レベル1" => "スライム", "レベル2" => "おばけキノコ", "レベル3" => "キャタピラー"}
p enemies
  puts "#{enemies["レベル2"]}が現れた!"

level = "レベル3の敵"
  puts "#{enemies[level]}が現れた!"

上記の例では、「おばけキノコが現れた!」、「キャタピラーが現れた!」と表示されます。

ハッシュの基本操作

ハッシュの個数を調べる(lengthメソッド)

enemies = {"レベル1" => "スライム", "レベル2" => "おばけキノコ", "レベル3" => "キャタピラー"}
p enemies
  puts "#{enemies["レベル2"]}が現れた!"
  puts enemies.length
   

上記の場合、個数は3つなので3と表示されます。

ハッシュのデータを追加する方法

enemies = {"レベル1" => "スライム", "レベル2" => "おばけキノコ", "レベル3" => "キャタピラー"}
p enemies
  puts "#{enemies["レベル2"]}が現れた!"
  puts enemies.length
enemies["レベル4"] = "うごく石像"
  puts "#{enemies["レベル4"]}が現れた!"
  puts enemies.length
   

ハッシュのデータを書き換える方法

enemies = {"レベル1" => "スライム", "レベル2" => "おばけキノコ", "レベル3" => "キャタピラー"}
p enemies
  puts "#{enemies["レベル2"]}が現れた!"
  puts enemies.length

enemies["レベル3の敵"] = "しのサソリ"
  puts "#{enemies["レベル3の敵"]}が現れた!"
   

ハッシュのデータを削除方法(deleteメソッド)

enemies = {"レベル1" => "スライム", "レベル2" => "おばけキノコ", "レベル3" => "キャタピラー"}
p enemies
  puts "#{enemies["レベル2"]}が現れた!"
  puts enemies.length
enemies.delete["レベル3"]
  p enemies
  puts enemies.length
   

ハッシュをループで処理する方法

enemies = {"レベル1" => "スライム", "レベル2" => "おばけキノコ", "レベル3" => "キャタピラー"}
enemies.each_value do |enemy|
  puts "#{enemy}が現れた!"
end
  

ハッシュから値とキーを取り出す方法

enemies = {"レベル1" => "スライム", "レベル2" => "おばけキノコ", "レベル3" => "キャタピラー"}
enemies.each do |level, enemy|
  puts "#{level}の#{enemy}が現れた!"
end
  

ハッシュの整列

weapons = {"レイピア" => 18, "ツクヨミの剣" => 30, "ダイアモンドスピア" => 42}
p weapons.sort
p weapons.sort.to_h
p weapons.sort_by {|k,v| v}
  

ハッシュのシンボル化

ハッシュをシンボル化することで見やすくすることができる

weapons = {レイピア: 18, ツクヨミの剣: 30, ダイアモンドスピア: 42}
p weapons

enemies = {レベル1: "スライム", レベル2: "おばけキノコ", レベル3: "キャタピラー"}
enemies.each do |level, enemy|
  puts "#{level}の#{enemy}が現れた!"
end
p enemies[:レベル2]