本を読む

読書やコンピュータなどに関するメモ

Enumerableのメソッドチェーンでループを1回にする

 RubyのEnumerableなオブジェクトでは、メソッドチェーンでどんどん処理を足せたりします。

(1..10000).map{|e| … }.map{|e| … }.find_all {|e| … }

 でもこれ、各段の処理ごとに10000回ループするのがもったいない気がします(貧乏性)。そこで、1回のループで処理するものを試作してみました。

 使い方は、「.to_oneloop_enumerator」をはさむだけ。

require 'oneloop_enumerator'

(1..10000).to_oneloop_enumerator.map{|e| … }.map{|e| … }.find_all {|e| … }

 たとえていうと、

(foo.map{|e| … }).map{|e| … }

foo.(map{|e| … }.map{|e| … })

に変換するような感じ(イメージなので、この式はエラーになります)。

 …ただ、こうしても、ブロックになっている部分の実行回数は変わらないので、あまり意味はないことに気付きました。だめじゃん ><

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/914-9a20a7d5

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad