面倒なバグが発見される。Procの中からbreakやreturnが実行されたとき、 ジャンプ先が存在しないケースがあるので、その場合にはLocalJumpError例外が発生する。 その例外の発生条件がbreakとreturnで異なっていることに気がついていなかった。
つまり、
def foo1 Proc.new{break}.call end def foo2 Proc.new{return}.call end
とあるとき、foo1の方はbreakのジャンプ先であるProc.newの呼び出しが完全に終了しているため、 飛び先が存在しないのでLocalJumpErrorが発生する。しかし、foo2の方はreturnの飛び先である foo2(の終端)がまだ存在しているため、そのままreturnすれば良い。
で、長い時間かかってなんとなくうまく動いているところまで持っていったのだが、 まだよくわからないコードが残っている。リファクタリングしないとな。
東京に移動。内容を具体的に書くのはまずいような気がするので、 印象とキーワードだけ。必要に応じて妄想してください。
結局事務局の努力により、無難な線にまとまりそう。
プログラミングコンテスト、プロコン、検索にかからない、 自前サイトの必要性、 プレゼンスの改善、インセンティブ、結果のフィードバック、 ノウハウの蓄積ができるように、 プログラム実行を作品として見るか、ソースコードそのものを見るか、 ソースコードレビュー、公開するかどうか、 一点突破主義を認めたい、自己申告制。
セキュリティキャンプ、セキュリティ甲子園への道、 合宿、講義、雑談、学習、次年度のチューター。