20201109_アウトプット(Rubyドリル)
学んだこと 5時間20分
今更ながら、Rubyドリルやっていて「なんでインスタンス変数使わないんだろう」「スコープの概念ってどうなっていたっけ」と疑問を感じた。
理解が浅かった部分としては「インスタンス変数」は「クラスから生成されたインスタンスの振る舞いを表す」。つまり他の場所でも使える「あくまで変数」であることと、「クラスが前提」にあることを理解した。(外から呼び出せる”何でも屋”と勘違いしていた。「変数」だった。)
なので「メソッド」を、他のメソッドから呼び出したり、「キーやそのバリュー」を他のメソッドで活用したい場合には、インスタンス変数ではなく、「仮引数・実引数」でデータを渡してあげることによって、可能になる。
また、「timesメソッド」「eachメソッド」のスコープの範囲は、「def〜endで定義するメソッド」と違いがある。
メソッドの位置 | def~endのメソッドのスコープ | times・eachメソッドのスコープ |
---|---|---|
メソッドの外で定義した変数 | (引数を使わない限り)メソッドの中で使用できない | メソッドの中で使用できる |
メソッドの中で定義した変数 | メソッドの外で使用できない | メソッドの外で使用できない |
つまり、変数は「メソッドの外」で定義すれば、(引数で呼ぶことによって)def~end内で、times・each文ならそのままで、変数を使えるということ。(だから、ルビードリルでも
data = []
はどのメソッドでも使えるように外にあるのか!とすっきりした)あと
return
は、可読性を高めるために書くこともあると知った。Rubyでは、return
は省略することが出来る。(ただし、JavaScriptなど他の言語ではある方が多い)Rubyで使う必要がある時は、途中で戻り値を返したい時という理解であっていた。while文は「ひたすら繰り返す」ので、無限ループになる時は止める必要があるが、
break
だと「そこで処理から抜ける」という意味になり、exit
だと「そこで例外処理をのぞき終了する(その先に処理があっても読みこまれない)」違いがあることを学んだ。
積み残し(復習したいこと)
Formオブジェクト(モデルの存在しないデータを更新)
Rails勉強会→50%
カラムの追加方法、ロールバック
デプロイ方法
感想
慈悲の瞑想始めてみた。呼吸よりも心の中で唱える方があっているかも。
メンターさんにパイザラーニング(答えなし)やアットコーダー(答えあり)のことを教えてもらってモチベーションが上がった。今はカリキュラム遅れているのですぐには出来ないけれど面白そうなので挑戦したい!(パイザラーニングのDから挑戦してみたい!!)
Ruby自体のアルゴリズムをきちんと理解すると、他のオブジェクト指向の言語が理解しやすくなったり、Railsの理解が深まることも教えててくれてワクワクした。本当にありがとうございます。