ruby-trunk-changes r34946 - r34952

今日は Enumerable#lazy という Enumerator の遅延評価版を返すメソッドが追加されました。

nobu:r34946 2012-03-08 16:44:08 +0900

.gdbinit という rubyデバッグのためのコマンドなどの定義している gdb 用のコマンドファイルに st_table のリファクタリングの変更を反映させています。

svn:r34947 2012-03-08 16:44:13 +0900

version.h の日付更新。

nobu:r34948 2012-03-09 00:25:04 +0900

Array オブジェクトに n 個の要素を C の VALUE の配列から追加する API rb_ary_cat() を追加しています。

svn:r34949 2012-03-09 00:25:09 +0900

version.h の日付更新。

nobu:r34950 2012-03-09 00:26:01 +0900

Enumerator#each と Generator#each が無引数だったのを任意の数の引数を受け取って元の each に渡すようにしています。つまり Enumerator や Generator の元になっている each メソッドが引数を受け取る仕様になっていたらそれに合わせることができるってわけですね。

nobu:r34951 2012-03-09 00:30:28 +0900

Enumerable#lazy というメソッドを追加して Enumerable::Lazy という遅延評価するリストみたいなオブジェクトを返すようにしています。 Enumerale::Lazy は Enumerator のサブクラスですが、いくつかの Enumerable のメソッド (map, select, reject, grep) はその場で全ての要素を処理しようとせずさらに Enumerable::Lazy でくるんだものを返すので、無限リストのように振る舞う Enumerator に対しても map などを呼んでその後 take などで必要に応じて結果を取り出す使いかたができるようになっています。 [ruby-core:37164] [Feature #4890]

nobu:r34952 2012-03-09 00:35:05 +0900

Enumerable#lazy に任意の引数を受け取るようにしていましたが引数 0 個に修正しています。