From: Yusuke ENDOH Date: 2009-11-12T01:23:56+09:00 Subject: [ruby-dev:39666] Re: [Bug:trunk] Enumerator.new {|y| y << 1 << 2 << 3 } 遠藤です。 2009年11月12日0:38 Akinori MUSHA : >> > それはそれとして、ドキュメントは必要でしょうねぇ。 >> >> Enumerator::Yielder と Enumerator::Generator は全部 nodoc だったので、 >> あわせて適当に書いてみました。これもコミットしようと思います。 > >  Yielder/Generator という組合せによる実装は実験的なもので、特に > 後者は外部に公開する必要がないので敢えて伏せていました。公開仕様に > すると制約になるので、需要が生じるまでは非公開の方がいいのではない > でしょうか。 ああ、やっぱりそういう意図なんですよね。そういうことならドキュメントは コミットしないでおきます。 ただ、Enumerator.new にちょろっと説明があるとはいえ、Yielder のインス タンスはユーザに丸見えなので、Yielder#yield と << まで nodoc というのは あまりよくないかなとは思いました。 >> 書いていて気がついたんですが、Generator#each は self ではなく proc の >> 戻り値を返すようです。意図的なんでしょうか。 >> >> g = Enumerator::Generator.new {|y| y << 1 << 2 << 3; :foo } >> p g.each {} #=> :foo >> >> まあ、Generator を直接使うことは普通はないので、問題になることはない >> のかもしれませんが。 > >  私が実装したときは self を返していましたが、こちらも r24587 で > 変更されているので、田中さんには何らかの意図があるのだと思います。 なるほど。 意図的ということなら、せっかく得られる情報をわざと隠すこともない、と いうことかなと思いました。 私にこだわりはないので、触らないでおきます。 -- Yusuke ENDOH