引き続き、Rubyのプログラミング学習としてチェリー本「プロを目指す人のためのRuby入門」の写経を続けています。
ただ、どうも思うように学習が進みません。
事実、社会人が通常業務以外の書籍や勉強をしようとするとどうしてもネックになるのが「学習時間の確保」です。
学習時間を確実に確保するために、「出勤直後〜業務開始までの20分」「昼休み40分」は毎日コーディングのための時間に充てるように決めたお陰で、一歩ずつですが先に進めるようになりました。
本当は定時で帰宅して、早々に学習をした方がいいのでしょうが、やむを得ない残業で疲れて寝てしまうこともしばしば。
2章では基本的な構文や条件分岐、メソッドに関する説明がメインでした。
3章では実際に作成したFizz Buzzプログラムのテスト自動化についてさらっと紹介されていて、記載の通りMinitestのインストール〜テストコードの記述・実行を行いました。
そしてとうとう4章へ突入するとブロックを中心とした配列・繰り返し処理の理解が中心となります。
numbers01 = [1, 2, 3, 4] sum01 = 0 numbers01.each do |n| sum01 += n end puts sum01 #▶︎10が出力される
上の記述は、numbers01に配列[1, 2, 3, 4]を代入して、eachメソッドを活用してブロックでsum01内にブロック引数nの計算結果を加えて出力するという処理です。
面白いと感じたのは下のようは記述方法です。
下のコードではブロック引数として指定したsum03_valueが、ブロック外で事前に100を格納するよう定義されていますが、ブロック内ではブロック引数が優先されるようです。
そのため、実行処理を行った場合の出力結果は115(=1+2+3+4+5+100)ではなく、単純に15(=1+2+3+4+5)となりました。
numbers05 = [1, 2, 3, 4, 5] sum03 = 0 sum03_value = 100 numbers05.each do |sum03_value| sum03 += sum03_value end puts sum03 #▶︎15が出力される:sum03_valueはブロック引数の名前として新たに0として扱われる
事前にsum03_valueに格納していた数値100はブロック引数に用いたために処理実行後は0として計算がされています。
こうしたRubyの概念を理解しながらこの先も学んでいきます。
4章では配列やブロックを中心に話が展開されていくようなので、頑張ってついていこうと思います。