タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

ライブラリとtipsに関するigrepのブックマーク (1)

  • enumerabler.rb: Enumerable の遅延評価版メソッドライブラリ - まめめも

    たとえば整数の配列から、条件に合う要素のうち、最初に現れる 10 個だけ拾いたいとき、どうしますか? ary.select {|x| x.even? }.take(10) ↑これは非常に明瞭なプログラムです。しかし select は、最初の 10 個だけでなく全要素をチェックしてしまうため、ary が大きいと無駄にループします。また、select の戻り値となる中間配列も無駄です。 ret = [] ary.each do |x| ret << x if x.even? break if ret.size == 10 end ↑これなら 10 個見つかった時点で終了してくれるし、無駄な配列確保もありません。しかし非常に強引で原始的で煩雑なプログラムであり、Ruby 1.9 の時代を迎えた新人類である我々には、可読性やメンテナンス性に問題があると言わざるを得ない。一言で言うと品がないのです。

    enumerabler.rb: Enumerable の遅延評価版メソッドライブラリ - まめめも
    igrep
    igrep 2011/06/14
    残念ながらRuby1.9以降、あるいはfacets 2.9.1が必要なようです。
  • 1