最近のキーワード

2006年06月01日

ブロックの合成(その4:with_xxx)

ここ最近書いている「ブロックの合成」をもうちょい使うと、collect_with_indexなどを、例えば、collectとwith_indexから自動的に合成して計算(あるいは定義)することができる。
require 'blockutils'
include BlockUtils

ary = [:a, :b, :c]
ary.extend(BlockDecorator)
ary.collect_with_index{|elem, idx| [elem, idx]}
# => [[:a, 0], [:b, 1], [:c, 2]]

DecoratedArray = BlockDecorator[Array]
ary = DecoratedArray[:a, :b, :c]
ary.collect_with_index_with_index{|elem, idx1, idx2| [elem, idx1, idx2]}
# => [[:a, 0, 0], [:b, 1, 1], [:c, 2, 2]]
ここで、BlockDecoratorというものがcollectとwith_indexからcollect_with_indexを自動的に計算するモジュールである。ちなみに、これまでのコードをまとめたものがblockutilsです。「with_xxxがなぜないんだ?」というストレスがたまにあり、そのときにEnumeratorがいまいちな気がするときに使ってみる。
posted by ttate at 01:27| 🌁| Comment(0) | TrackBack(0) | メモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。