Grow.rb 〜例外処理とループ処理〜
本日はGrow.rbで例外処理とループ処理について学んできました!
以下はGrow.rbのイベントページです!
制御構文
まずはループ処理の流れを変えるメソッドについて確認しました!
以下は制御構文についてまとめてあるるりまのページです。
混乱しがちなnext、breakについて整理できたし、throwは初めて知る事が出来ました!
next
nextはそのroopの下の処理をせず次に行きます
break
breakはそのroopを抜けます
Kernel#throw
複数のroopを一気に抜けるときはKernel#throwメソッドを使います。
コールバックを抜けるときも使うようです。
例外処理の構文
次に一般的な例外処理の構文について確認しました。
rescueに何も指定しなければStandard Errorがrescueされている状態です。
rescueにExceptionを指定してしまうと、処理を止めるべきエラーでもrescueされてしまいまずいというお話もありました!
お題を解く
これらを確認した上で、お題を解いていきました!!
以下がそのリポジトリです!
お題を解いていく前に、予備知識としてキーワード引数についても解説していただきました!
普通の引数ではなくキーワード引数にしておくと、引数の順番に依存しなくなるというメリットがあります!
キーワード引数を何となく知ってる程度だったので、仕組みやメリットについて教えて頂きとても良かったです!
class Foo
def bar(arg1:, arg2: :bar, arg3: :nil)
puts art1
puts arg2
puts arg3
end
end
Foo.new.bar(arg3: :baz, arg1: :foo)
=>
foo
bar
baz
さらに2個目のお題を解いていく前の予備知識としては、Procについて解説して頂きました!
Rubyはブロックにいろんな処理を渡せますが、変数にいれられません。
そこでProcを使います!
procはcallで呼ぶ事が出来ます。
irb(main):001:0> pro = -> { puts :ok }
=> #<Proc:0x00007fced324e4e8@(irb):1 (lambda)>
irb(main):002:0> pro.call
ok
=> nil
感想その他
キーワード引数やProcオブジェクトを使いつつ、ループ処理の適切な場所で例外処理を書いていく…という自分には難易度高めなお題でしたが楽しかったです!!!
redoは特に復習しなくては。。。!!
例外処理をかく際、見様見真似で済ましてしまいがちでしたが、基本的な部分から学べてよかったです!!