ハッシュと配列の違い

自分自身の体力や集中力足りないのはあるかもしれないけど、1日プログラミングしてると夜は泥のように眠ってしまうね・・・。

 

先日いまいち理解が追いつかなかった配列について、今日はおさらいしていこうと思う。

 

・ハッシュと配列の違い

⇨これはツイートしてた通りかな。

ハッシュ:値をキーによって管理する箱

配列:値を順番によって管理する箱

ってこと。

つまりどういうことかっていうと、まずはハッシュから

#空のハッシュ(箱)を作る。このハッシュ(箱)に要素を追加していく
hash = {}

# ユーザーに値を入力させて、キー(シンボル)とバリューを紐付けてハッシュ(箱)に追加する。
puts "会場を入力してください。"

hash[:place] = gets

puts "日付を入力してください"

hash[:date] = gets

puts "時間を入力してください"

hash[:time] = gets



# hash(箱)に保存されたバリューを、シンボルネームから呼び出して表示
puts "会場 : #{hash[:place]}"

puts "日付 : #{hash[:date]}"

puts "時間 : #{hash[:time]}"

 

先日と同じコードで恐縮だけど、このコードを実行するとこんな感じになる

会場を入力してください。
東京                #ユーザーが手動で入れた値
日付を入力してください   
6/16          #ユーザーが手動で入れた値
時間を入力してください   
19:00         #ユーザーが手動で入れた値
会場 : 東京
日付 : 6/16     
時間 : 19:00

最終的に会場、日付、時間が出てきました。

ちなみにこれを出力している関数はputs "会場 : #{hash[:place]}"というやつ。

hash(箱)に入っているモノ(バリュー)を、:placeという鍵(キー)で取り出しているっていうイメージかなぁ。

 

対して次は配列。

ハッシュの時と出力する結果は一緒だけど、こんなコードになる。

#空の配列(箱)を作る。この配列(箱)に要素を追加していく
array = []

# ユーザーに値を入力させて変数と紐づける
puts "会場を入力してください。"
place = gets

puts "日付を入力してください"
date = gets

puts "時間を入力してください"
time = gets

# 変数を配列(箱)に追加する。
array.push(place , date , time)

# 配列の中に入ってる0番目の要素、1番目の要素、2番目の要素を出力する。
puts "会場 : #{array[0]}"
puts "日付 : #{array[1]}"
puts "時間 : #{array[2]}"

出力結果は下記の通り。ハッシュと一緒ですね。

会場を入力してください。
東京         #ユーザーが手動で入れた値
日付を入力してください
6/16        #ユーザーが手動で入れた値
時間を入力してください
19:00        #ユーザーが手動で入れた値
会場 : 東京
日付 : 6/16
時間 : 19:00

ここで注目して欲しいのはputs "会場 : #{array[0]}"という記述。

ハッシュの時はキーを指定することでバリューを取り出していましたが、

配列では箱に入っている順番で値を管理しています。

配列(箱)に入っているモノ(バリュー)を、0という管理番号で取り出しているっていうイメージかと思います。

管理番号0番目のモノである「東京」という要素を取り出してるわけです。

 

配列では数を数える時は0から数えます。

例えば、[りんご、バナナ、ぶどう]という配列があった場合、

0番目⇨りんご 1番目⇨バナナ 2番目⇨ぶどう となります。

 

こんなところでしょうか。

コードの解説とかは省いちゃってるけどなんとなくのイメージだけでも固まってくれると嬉しいな。