From: Yukihiro Matsumoto Date: 2009-09-10T22:39:19+09:00 Subject: [ruby-dev:39296] Re: Why doesn't Array#product return Enumerator? まつもと ゆきひろです In message "Re: [ruby-dev:39277] Why doesn't Array#product return Enumerator?" on Thu, 10 Sep 2009 01:48:38 +0900, Yusuke ENDOH writes: |Array#product は Enumerator でなく配列を返しますが、何か理由が |あってのことでしょうか。 permutationやcombinationはブロックを受けるのが基本型で、ブロッ クがない形式では他のメソッドにならいEnumeratorを返しています。 一方、productは(配列として)積を返すのが基本型で、ブロックを受 ける形式はありません。この違いが理由です。 |Array#permutation や combination のように Enumerator を返した方が |自然かつ便利だと思います。これらのメソッドは brute force 的な探索に |よく使いますが、product だけ探索前に巨大な配列を確保してしまうので |いやらしいです。 | |仕様変更になってしまいますが、一応言ってみました。どうでしょうか。 私自身はこれらのメソッドを使わないので、これらが「自然かつ便 利」かどうか判断できません。ただ、言葉の意味から考えると productと言われて、積ではなくEnumeratorを返すのはおかしい気が します。まあ、それならばpermutationやcombinationも十分におか しいと言われればその通りなんですが。