Output Diary

プログラミング × 読書 のアウトプットを発信しています

【Ruby】ハッシュとは

因幡の白兎のイラスト(ワニ)
ハッシュとは
→複数のオブジェクトをまとめることが出来る入れ物のことをいいます。
 
ハッシュは、
 
{:apple => 100, :apple_juice => 300}
 
のような形で表します。
 
ハッシュは{    }で囲い、
「キー」と「値」のセットで複数のデータを扱う事ができます。
 
 
記号 => は見た目がロケットぽいのでハッシュロケットと呼ばれています。
 

f:id:kina_kq:20210225123922p:plain



似てるのかな、、?
 
 
今回の例の場合、
appleが「キー」の部分
100が値です。
 
 
 
appleキーに対応する値が100で、
apple_juiceに対応する値が300ということになります。
 
 
ハッシュのキーと値には様々な種類のオブジェクトを書くことが出来ます。
ハッシュへさらに新しいキーと値を追加していったり、削除することも出来ます。
 
 
配列と同じようにハッシュはオブジェクトに分類されます。
ハッシュのクラス名はHashです。
 
ハッシュのことを、
・ハッシュオブジェクト
・Hashオブジェクト
・ハッシュ

 

と呼びます。
 

シンボル(Symbol)とは

 
キーに書かれたappleapple_juiceはシンボルと呼ばれるオブジェクトです。
シンボルは文字列と似ており、コロン記号(:)から始めます。
 
シンボルのクラス名はSymbolです。
シンボルはハッシュのキーでラベルのように使われます。
 

f:id:kina_kq:20210225123947p:plain



 
シンボルは文字列へ変換することが出来ます。
文字列からシンボルへはto_symメソッドを使います。
シンボルから文字列へはto_sメソッドを使います。
 
 

2通りのハッシュの書き方

 
ハッシュロケット => は打つのが少し大変です。
そのため、短縮した書き方があります。
 
{:apple => 100, :apple_juice => 300}
{apple: 100, apple_juice: 300}
 
 

2つのハッシュを1つにまとめる

2つのハッシュを1つにまとめるときにはmergeメソッドを使います。
mergeメソッドは元のハッシュと指定したハッシュを1つにまとめて新しいハッシュを作ります。
 
merge.rb
coffee_menu = {coffee: 500, cafee_latte: 700}
tea_menu = {tea: 700, tea_latte:800}
menu = coffee_menu.merge(tea_menu)
p menu
↓(ターミナル)
{:coffee=>500, :cafee_latte=>700, :tea=>700, :tea_latte=>800}
 
 

ハッシュからキーと値を削除する

ハッシュからキーと値の組を削除するときにはdeleteメソッドを使います。
ハッシュ.delete(キー)と書くと、指定したキーと値の組を削除します。
 
delete.rb
coffee_menu = {coffee: 500, cafee_latte: 700}
menu.delete(:caffe_latte)
 
p menu
↓(ターミナル)
{:coffee=>500 }
 
 

ハッシュを繰り返し処理をする

 
★ハッシュの繰り返し処理

f:id:kina_kq:20210225124007p:plain


配列を分解する

charsメソッドを用います。

たとえばchocolate🍫で使われているアルファベットを分解して、カウントしたい!という場合は、

 

hash = {}
hash.default = 0
array = "chocolate".chars
array.each do |x|
hash[x] += 1
end
p hash

 

と表します。

 

そうすると、ターミナルでは

{"c"=>2, "h"=>1, "o"=>2, "l"=>1, "a"=>1, "t"=>1, "e"=>1}

と分解して表示されます。

 

 

という所で、

また追加で記述するかもしれませんが、

終わりにしたいと思いますー!

嬉しそうにチョコレートを持っている人のイラスト(女性)