20210402・03_アウトプット(Ruby)
今日やったこと
HTMLの理解を深める 50分
ゼロからわかるRuby超入門の続き(6)3時間40分
Laravelのアプリ 1時間(mysql接続ができておらず、migrateがうまくいかなかった もう少し調べよう)
1%の成長
ブロック変数について、ハッシュと配列でごっちゃになっていた部分が整理できた。ハッシュの時は、原則キーと値の2つを渡す。
each_key
やeach_value
などのメソッドを使う時だけ、そのうちの一部を指定しているので1つとなる。配列の時は、配列の直後にメソッドをつけることが出来たが、ハッシュの場合には代入した変数に対して
delete
やmerge
メソッドを行うことを理解。
新しく学んだこと
ハッシュ全体のこと
ハッシュをpメソッドで出力する際はハッシュを丸かっこで囲わないと、文法の解釈が曖昧となりエラーとなること。
シンボルへ変換するときは
to_sym
メソッドがあること。キーとシンボルを同じ意味に捉えていた。しかし、違った。
🟢「キーとバリュー」は「見出しと内容」という概念のことを指す。
🟢シンボルは「キー」を表現する方法の一つ。ハッシュロケットを使う場合には、シンボル以外(文字列など)をキーにすることが出来る。ハッシュに対して、キーを指定して探そうとした時、値がない場合は
nil
を返すが、デフォルトを設定することもできる。
menu = { coffe: 300, caffe_latte: 400} menu.default = "その値はないよ" p menu[:tea] #=> "その値はないよ"
mergeメソッド
- merge メソッドを使い、2つのハッシュを1つにまとめることができる。
coffee_menu = { coffee: 300, caffe_latte: 400 } tea_menu = { tea: 300, tea_latte: 400 } menu = coffee_menu.merge(tea_menu) p menu #=> {:coffee=>300, :caffe_latte=>400, :tea=>300, :tea_latte=>400}
- 逆でもOK(そうすると、teaからの順になった)
menu
ではなく、coffee_menu
やtea_menu
を代入後の変数にしたら、NameErrorになった💡個別で値の代入をする時は書き換え(上書き)が出来るけれど、「ハッシュ自体を定義した変数」と「マージした後の変数」という同義にならない場合はちゃんとエラーになるんだと勉強になった。- ハッシュに直接繋いでもNameErrorになった(
{ coffee: 300, caffe_latte: 400 }.merge(tea_menu)
deleteメソッド
- キーと値する時はdeleteメソッドを使う。
ハッシュ.delete(キー)
menu = { book: 500, note:100 } menu.delete(:note) p menu #=> {:book=>500}
eachメソッド
menu = { coffee: 300, tea: 400 } menu.each do |key, value| p "#{key}は#{value}円です" end #=> "coffeeは300円です" "teaは400円です"
メソッド | ブロック変数の数 | 内容 |
---|---|---|
each | 2つ(key・value) | キーと値を表示 |
each _key | 1つ(key) | キーのみ表示 |
each_value | 1つ(value) | 値のみ表示 |
感想
- 午前中に、オンラインスクールの時の仲間と近況報告。息抜きになった😌仲間がわからないと言っていたAWSにおけるエンジンエックスの役割を説明したら、理解につながったようで嬉しかった。
- 最近、メリハリを大事にするよう心掛けている。ついプログラミング以外の時に、心のどこかでプログラミングのことを考える気持ちが抜けないでいた。自分のメンタル的にも関わる相手にとっても良くないなーと感じていたものの、ついつい心配性で考えてしまう癖がある。プログラミングもそうでないことも1つ1つ楽しみながら気持ちを切り替えよう!