20210328_アウトプット(Ruby)
1%の成長(昨日の自分の知識より1%成長する)
Wantedlyの「将来やってみたいこと」「やったこと」を追記・投稿(1時間)
ゼロから分かるRuby入門(チャプター1から4まで)(4時間)
paizaのスキルチェック(1時間)
SPI(1時間30分)
新しい発見
ゼロからわかるRuby入門
簡単なプログラムをかく
- pメソッドはデバッグの道具として使う。(プログラムの機能として意図して表示するときはputs)
🤔(どうして?)
pメソッドが唯一、戻り値が「引数のオブジェクト」になるからだよ。(putsメソッドは改行ありでnil、printメソッドは改行なしでnilとなる。nilじゃどこが間違えているのか分からない。)
- エラーメッセージの時に、コロン(:)で区切られた数字は、プログラムの何行目でエラーが起きたのかを教えてくれる。
条件分岐
慣習的に末尾に
?
がつくメソッドはtrue
かfalse
で返すことが多い。even?
(偶数か?)、odd?
(奇数か?)後置ifのときはend不要。
elsif
は複数書けるが、書きすぎると読みづらくなる。そんなときは、&&
・||
・case
を検討しよう。
内容 | 選択肢がこんな時に使う |
---|---|
if | 二択 |
case | 三択以上 |
「一つ選ぶ」は
case 変数
と定義。caseを書かないときは、whenの後に条件をかく。case文のとき、複数に合致するものがない時の選択肢としてelse。
繰り返し
慣習的に、ブロックを複数行で書くときは、
do ~ end
、一行で書くときは、{ ~ }
。「条件付き繰り返し」が
`while
case 変数 when 候補1 変数の値が候補1の時と等しい時の処理(複数行書くことも可能) when 候補2 変数の値が候補2の時と等しい時の処理(複数行書くことも可能) end
変数を書かずに、「候補1」や「候補2」に条件を書くことも可能。(wallet >= 500)
while 条件 条件を満たしている間、繰り返し実行する処理 end
ブロックの時のように
do
は不要。「繰り返し実行する処理」の戻り値を元に「条件」を判定する。なので条件が「変数 < 2」だった時、1週目の時の戻り値は「1」なので、「2」まで実行されることがスッキリ。
配列
- 配列の中身のオブジェクトクラスはバラバラでも可能(例 文字列、整数、小数点が入った配列)
- 変数を使わずにメソッドを呼び出すことも可能
p ["牛乳", "お茶"].first #=> "牛乳"
要素の追加 | メソッド |
---|---|
末尾に追加① | push |
末尾に追加② | << |
先頭に追加 | unshift |
要素の削除 | メソッド |
---|---|
末尾の要素を1つ削除 | pop |
先頭の要素を1つ削除 | shift |
popメソッドとshiftメソッドは、削除した要素を返す。
|
はパイプと読む。
感想・振り返り
- 「全部頑張らないと」のように、変に自分を追い詰める癖を改善したいので、1%の成長項目を追加してみた。「1%進めよう」という気持ちでやってみたら、「変な焦り」に囚われることなく、一つずつ出来て良かった。
- 昨日、ルビィのぼうけんを読んでいて、最後の鳥井さんのコメントにあった「よく観察すること」「その中からパターンを見つけること」「小さいことから始めて大きくしていくこと」に励まされた。あとビットの世界の絵がとても可愛い。素敵だ。
- Rubyを書くことがまだまだ下手な自分を受け入れよう。Ruby入門の本から始めてみて着実に成長しよう。
- 今思うとここ一週間を振り返って「自分はエンジニアに向いていないのかもしれない」「なんでこんなにコード書けないんだろう」と「自分ができる感覚が持てない」ことが一番辛かった。
- 「出来る気が持てない」と、やる気やモチベーションが大きく低下することを実感した。
- 「出来る実感」を持つにはどうしたらいいか。今何が出来る?小さく成長するにはどうしたらいい?
- なぜ書けないのか?①何より自信がない。②問題を細かく「順序進行」「繰り返し」「条件分岐」に分ける力が弱いのでは。③型がふわっとした理解。特に、メソッドへの引数の渡し方・クラス・ブロック引数・モジュールあたりの知識の理解がまだまだ。
- 嬉しかったのは、基礎を4までだけど、行なってからpaizaを解いてみたら解けるようになったこと。楽しくなってきた。ちょっとずつ自信つけていこう。