2015年10月28日水曜日

古いRubyでLazyを使う

RubyでLazyを使いたくても古いバージョンしか入っていない場合の対処。

module Enumerable
  unless defined? lazy
    def lazy
      each
    end
    alias :force :to_a
  end
end

…そう。2.x系向けに書いたEnumerable::lazyを使うコードを、とりあえず動くようにするだけのごまかしだ。本当に遅延評価するわけではないので、無限リストなんて使ったら無限ループに陥る。eachはEnumerableのメソッドではないので、lazyをeachのエイリアスにはできない。

0 件のコメント:

コメントを投稿