From: "NARUSE, Yui" Date: 2010-03-13T21:01:06+09:00 Subject: [ruby-dev:40616] Re: 組込みの重複順列・重複組合せ 成瀬です。 (2010/03/13 20:41), Yusuke ENDOH wrote: > 2010年3月13日14:53 Kenta Murata: >> Feature #2673 ( http://redmine.ruby-lang.org/issues/show/2673 ) >> で私が提案した、要素数を返す特異メソッドの定義も >> ついでに導入されたりするでしょうか? > > 反対ではないのですが、組み込みで特異メソッドを返すという API に前例は > ありましたっけ。なくても、まつもとさんが反対していないからいいのかも > しれないですが。 ある種の Enumerator に length を返させたいという意図はわかります。 "hoge".bytes.length とかできてもいいかな、とは。 ただ、特異メソッドというのにはネガティブです。 > 特異メソッドではなく、FixedSizeEnumerator< Enumerator を定義して、 > permutation などではそれを返す方が綺麗ではないですかね。 > あまりまじめに考えると Indexible みたいに発散するかな。 > > 少なくとも 1.9.2 の仕様としては、「permutation が返した Enumerator > として扱えるオブジェクトは、length メソッドを持つ。その具体的な実現 > 方法は保障しない」などと明記しておくのはどうでしょう。 わたしは Enumerator クラスが length を持っていい派。 rewind できるものとできないものがあったりと、一定条件で利用可能な メソッドが変わるのはすでに前例もありますし。 akr さんの Socket の改善でも P83 に以下の通りありますな。 > Design Decision (15) --- Unusable Methods > 常に定義しておく > モジュールで定義して使用可能なソケットに extend するという案もあった > トリッキー過ぎる http://www.a-k-r.org/pub/socket-rubykaigi2009-too-long.pdf -- NARUSE, Yui