自分自身の体力や集中力足りないのはあるかもしれないけど、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番目⇨ぶどう となります。
こんなところでしょうか。
コードの解説とかは省いちゃってるけどなんとなくのイメージだけでも固まってくれると嬉しいな。