20210402・03_アウトプット(Ruby)

アウトプット画像

今日やったこと

  • HTMLの理解を深める 50分

  • ゼロからわかるRuby超入門の続き(6)3時間40分

  • Laravelのアプリ 1時間(mysql接続ができておらず、migrateがうまくいかなかった もう少し調べよう)

1%の成長

  • ブロック変数について、ハッシュと配列でごっちゃになっていた部分が整理できた。ハッシュの時は、原則キーと値の2つを渡す。each_keyeach_valueなどのメソッドを使う時だけ、そのうちの一部を指定しているので1つとなる。

  • 配列の時は、配列の直後にメソッドをつけることが出来たが、ハッシュの場合には代入した変数に対してdeletemergeメソッドを行うことを理解。

新しく学んだこと

ハッシュ全体のこと

  • ハッシュを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_menutea_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メソッド

  • ハッシュでeachメソッドをする時は、ブロック変数としてkeyとvalueの2つを渡す。

  • ブロック変数名はkeyとvalue出なくても可能。

menu = { coffee: 300, tea: 400 }
menu.each do |key, value|
  p "#{key}#{value}円です"
end

#=> 
"coffeeは300円です"
"teaは400円です"


  • 🤔keyだけ、あるいはvalueだけ表示させたい時はどうするの?
  • 🥸each _keyメソッドやeach_valueを使おう
メソッド ブロック変数の数 内容
each 2つ(key・value キーと値を表示
each _key​ 1つ(key) キーのみ表示
each_value 1つ(value 値のみ表示

感想

  • 午前中に、オンラインスクールの時の仲間と近況報告。息抜きになった😌仲間がわからないと言っていたAWSにおけるエンジンエックスの役割を説明したら、理解につながったようで嬉しかった。
  • 最近、メリハリを大事にするよう心掛けている。ついプログラミング以外の時に、心のどこかでプログラミングのことを考える気持ちが抜けないでいた。自分のメンタル的にも関わる相手にとっても良くないなーと感じていたものの、ついつい心配性で考えてしまう癖がある。プログラミングもそうでないことも1つ1つ楽しみながら気持ちを切り替えよう!