Rubyの標準メソッドにthrow/catchはネストの深いループ(多重ループ)を一発で抜けだしたい場合などに使えそうですので、紹介します。
🍄 throw/catchの説明
次のサンプルソースを使って、throw/catchを説明します。
def ween puts 'ween' throw :symbol end
catch(:symbol) do ween puts 'hoge' end
|
つまり「throw/catch」は「raise/rescue」とほぼ同じ動きをします。
# 両者の違い
* throw/catch => symbol
* raise/rescue => Error(例外)
🐰 throw/catchを使ったネストの深いループからの脱出
throw/catchはsymbolのため、通常のネストの深いループから抜け出したい場合などにも使えます。
catch(:break_loop) do 3.times do |i| 3.times do |j| puts "i, j = #{i}, #{j}" throw :break_loop if i == 2 and j == 1 end end end
puts "loop out"
|
Ruby throw2.rb >i, j = 0, 0 >i, j = 0, 1 >i, j = 0, 2 >i, j = 1, 0 >i, j = 1, 1 >i, j = 1, 2 >i, j = 2, 0 >i, j = 2, 1 >loop out
|
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!