From: Akinori MUSHA Date: 2009-11-12T00:38:32+09:00 Subject: [ruby-dev:39665] Re: [Bug:trunk] Enumerator.new {|y| y << 1 << 2 << 3 } --pgp-sign-Multipart_Thu_Nov_12_00:37:48_2009-1 Content-Type: text/plain; charset=ISO-2022-JP At Wed, 11 Nov 2009 23:50:47 +0900, Yusuke ENDOH wrote: > 2009年11月11日22:54 Tanaka Akira : > > In article , > > Yusuke ENDOH writes: > > > >> 今 Yielder#<< は Yielder#yield の alias になっていますが、yield は > >> 元の挙動のまま、Yielder#<< だけ常に self を返すようにしてもいいで > >> しょうか。 > > > > あぁ、それは妥当だと思います。 > > ありがとうございます。それではコミットします。  self を返すようにしていたはずだと思ったら、 r24587 で変更されて いたんですね。ブロックの値を取れなかったわけか。#yield はその方が いいですね。一方 #<< は self を返す方が自然と思うので賛成です。 > > それはそれとして、ドキュメントは必要でしょうねぇ。 > > Enumerator::Yielder と Enumerator::Generator は全部 nodoc だったので、 > あわせて適当に書いてみました。これもコミットしようと思います。  Yielder/Generator という組合せによる実装は実験的なもので、特に 後者は外部に公開する必要がないので敢えて伏せていました。公開仕様に すると制約になるので、需要が生じるまでは非公開の方がいいのではない でしょうか。 > 書いていて気がついたんですが、Generator#each は self ではなく proc の > 戻り値を返すようです。意図的なんでしょうか。 > > g = Enumerator::Generator.new {|y| y << 1 << 2 << 3; :foo } > p g.each {} #=> :foo > > まあ、Generator を直接使うことは普通はないので、問題になることはない > のかもしれませんが。  私が実装したときは self を返していましたが、こちらも r24587 で 変更されているので、田中さんには何らかの意図があるのだと思います。 -- Akinori MUSHA / http://akinori.org/ --pgp-sign-Multipart_Thu_Nov_12_00:37:48_2009-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEABECAAYFAkr62kwACgkQkgvvx5/Z4e4AywCgm9cfBHCTyYrcnxSRBSMLxZ/u 0o4An1KiXcT1knaawYd/ygeB42I7JtHB =aTjw -----END PGP SIGNATURE----- --pgp-sign-Multipart_Thu_Nov_12_00:37:48_2009-1--