Ruby超入門 2周目 CHAPTER 6-3 ハッシュの要素を 繰り返し処理する まで
『ゼロからわかる Ruby 超入門 (かんたんIT基礎講座) 』
github.com
※上の画像はRuby超入門に出てくるハッシュオブジェクトさん
はい。こんにちは。眠くてなかなか目が覚めないよ。koujiです。
今日は昨日眠くて唐突に分割してしまった、ハッシュの続きを振り返っていきまーす。
ハッシュにキーと値を追加
こんな感じ。ハッシュの中にコーラもレッドブルもモンスターもあるけど、いまいち刺激が足りねーぜ!!マカがないマカを追加しよう!!そんな時は…
変数名[:シンボル] = 値
こうやって書いてあげるとdrinksハッシュにマカが追加される!!一番みなぎってくるのはマカのドリンクだと信じて疑いません。
で、例えばハッシュの中にすでにコーラあるのにdrinks[:cola] = 400って書いてあげる。きっと名前は同じだけどお高いコーラなのだろう。そうするとキーが後から追加したものに上書きされるんだ。高いコーラってのを飲んでみたいものだ。
存在しないキーを指定したとき
てか、マカじゃなくてスッポンエキスなかったっけ?と存在しないsupponを取得しようとすると… nilが取得されるんだね。
ちなみに存在しないキーを指定したときの値を指定することもできる。
drink.default = 値 を書いてあげるとハッシュの中に存在しないキーが指定されたときの値を指定できる。なので上の場合だと、さすがにスッポンエキスねーよ!そんなものはない!ってことなのでハッシュに存在なんかするわけないので"専門店へ行ってこい”になるのだ。
2つのハッシュを1つにまとめる
普通のドリンク以外にも酒だ酒もってこい!!に対応するために、まずalcoholハッシュを作りまーす。で、もう一つのdrinksハッシュとガッチャンコするには…
ハッシュは全部変数に代入してるので
drinksハッシュ.merge(alcoholハッシュ)って書いてあげると1つにまとめられちゃうね。で、さっきみたいにdefault設定しておくと酔っ払いがしつこくスッポンを求めてきても「専門店へ行ってこい」となるんだねー。便利。
ハッシュの繰り返し処理
さっきマージして作ったdrunkに.each do なんだけど配列のときと違って変数が2つになってるね。|key, value|のkeyの方にはシンボルオブジェクトが代入されて、valueの方には値が代入されてる感じだね。で、それをハッシュの中身全部に繰り返すって感じ。
これで泥酔した客にも繰り返し#{key}は#{value}円だって言ってんだろゴルァ!って繰り返し伝えられるようになったぜ。
練習問題
※ネタバレ注意なので練習問題楽しみたい人は見ないでください
これが面白いなーって思ったんだよね。これunless使ってて.defaultで指定してあげるのじゃダメなのかなぁ?って思ったんだけど、上の場合だと、こっちからtea指定して、こっちから「紅茶ねーのか?」って聞いてるイメージだよね。
で、上の方で書いたdefaultのsupponだと、こっちがスッポンエキスよこせよ!にたいして、向こうから「専門店へ行ってこい」って言われてるイメージ。よくわかんないけど、そういうイメージというか流れっていうか、そんなものでも書き方かわってくるのかもしれないなーって思ったり思わなかったり。
ってな感じでCHAPTER 6はここまで!
ハッシュもなかなかおもしろかったぜ!ちなみにこのCHAPTER 6の練習問題は高度なやつがあって難しかった…
ということで、またそのうち〜!