以下の内容はhttps://tbpgr.hatenablog.com/entry/20140603/1401802969より取得しました。


Ruby | Kernel | throw

概要

Kernel#throw(tag, value = nil) -> ()

詳細

Kernel.#catchとの組み合わせで大域脱出を行います。
throw は同じ tag を指定した catch のブロックの終わりまでジャンプします。
tag はメソッド内とは限らない。

サンプルコード
def pattern1
  cnt = 0
  catch(:pattern1) do
    loop do
      cnt += 1
      puts cnt
      throw :pattern1, "pattern1" if cnt == 5
    end
  end
end

print pattern1

def pattern2_1
  cnt = 0
  loop do
    cnt += 1
    puts cnt
    throw :pattern2, "pattern2" if cnt == 5
  end
end

def pattern2_2
  cnt = 0
  catch(:pattern2) do
    begin
      pattern2_1
    ensure
      puts "ensure"
    end
  end
end

puts
print pattern2_2

出力

1
2
3
4
5
pattern1
1
2
3
4
5
ensure
pattern2



以上の内容はhttps://tbpgr.hatenablog.com/entry/20140603/1401802969より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14