ぼくらの勉強

ぼくらのための勉強をしていきます。

break from proc-closure エラーの対策

   

Rubyとかでbreakメソッドを使ってるとたまに遭遇する

break from proc-closure

というエラー。(ぼくの場合はAnemoneとかNokogiriを使ってHTMLをごちゃごちゃスクレイピングしてる時に初めて遭遇)

ネットで検索した時にあまりに情報が少なかったので記事にすることにしました。

 

このエラーが発生している原因は、エラーの文面通りbreakメソッドを使うべきでないオブジェクト(proc-closure)にbreakメソッドを使っているから。

じゃあproc-closureって何やねんっていう話になると思いますが、それは以下の記事を読んで何となくお察しいただければと思います。

参考記事なぜクロージャ(Closure)と言うのか?

(自分も未だにこいつの詳細を掴みきれていないのでこんな説明でどうかお許しを。ご指摘、ご教授お待ちしております)

結論を言えば基本的にはbreakをnextに置き換えれば解決します。

例えば


break if a == b

としていてこの箇所でエラーが発生するなら


next if a == b

とすればOK。

 

以上、少しでもご参考になれば幸いです。