配列、ハッシュ、シンボルについて、
たまに書き方忘れたり、よくわからなくなることはありませんか?
簡単に復習しましょう!
あなたは、とあるRuby初学者で、小学校の先生です。
生徒たちのテストの点数を一覧にしてまとめやすくしたいなぁって
思ったとします。さて、どうしますか?
score = [80, 76, 50, 40, 20]
とりあえず、配列にして、点数をまとめてみました。
しかし、これでは誰がどの点数をとったのか、さっぱりわかりませんよね。
そこで出てきたのが、ハッシュです!
scores = {"tanaka" => 80, "satou" => 76, "itou" => 50, "katou" => 40, "suzuki" => 20}
これなら、誰が何点かわかりますね!
この {} をハッシュ
と言います。
また、"tanaka"を【キー】、80を【値】と言います。
さらに上のハッシュは以下のように変形できます。
scores = {:tanaka => 80, :satou=> 76, :itou => 50, :katou => 40, :suzuki => 20}
"tanaka" が :tanakaに変わりました。
この書き方を、シンボル
って言います。
さらにさらに、この書き方は、もっと簡単になります。
scores = {tanaka: 80, satou: 76, itou: 50, katou: 40, suzuki: 20}
めちゃくちゃ簡単になりましたね!
ただし、取り出すときには要注意!
puts scores[tanaka] #← × エラー!
puts scores[:tanaka] #← ◯
tanaka はシンボルだから、下のように書かなければいけません!
これで、だいぶまとめやすくなり、安心ですね。
では、1組の生徒と2組の生徒の点数を、分けて集計したい!っていう時は
どうしたら良いでしょうか?
scores = [
{tanaka: 80, satou: 76, itou: 50, katou: 40, suzuki: 20},
{iida: 67, ogawa: 89, kojima: 60, nagashima: 70, matsuda: 40}
]
ハッシュと配列の合わせ技を使えばOKですね。
こうすれば、1組(tanaka ~ suzuki)、2組(iida ~ matsuda)で、まとめられますね。値を取り出してみましょう。シンボルに注意ですよ!
puts scores[0][tanaka] ← エラー!
puts scores[0][:tanaka] ← tanakaは、シンボル!
このように、puts 配列[インデックス番号][キー]
という書き方で、取り出すことができます。
では、楽しいプログラミングライフを〜