[#37248] [Feature:1.9] Enumerator#inspect — "Yusuke ENDOH" <mame@...>

遠藤です。

12 messages 2008/12/02

[#37337] [Feature #841] Object#self — "rubikitch ." <redmine@...>

Feature #841: Object#self

13 messages 2008/12/09

[#37513] Current status of 1.9.1 RC1's issues — "Yugui (Yuki Sonoda)" <yugui@...>

Hi, folks

14 messages 2008/12/20
[#37516] Re: Current status of 1.9.1 RC1's issues — Masatoshi SEKI <m_seki@...> 2008/12/20

咳といいます。

[#37576] [BUG:trunk] encoding for stdio's — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

11 messages 2008/12/24

[ruby-dev:37333] Re: RSS::Maker.create(version)

From: "Akinori MUSHA" <knu@...>
Date: 2008-12-09 10:15:04 UTC
List: ruby-dev #37333
At Mon, 8 Dec 2008 20:28:44 +0900,
Kouhei Sutou wrote:
> > > もう1つ思いついたのですが、これではどうでしょうか?
> > >
> > >   maker = RSS::Maker[version].new
> > >
> > > or
> > >
> > >   maker = RSS::MAKERS[version].new
> > >
> > > こっちの方が変なことをしていないように見える気がします。
(snip)
> ハッシュではなく[]を持つオブジェクトを用意するつもりでした。
> 私は、[]はハッシュっぽく見せるものというよりも、コンテナっぽ
> いオブジェクトへの一般的なアクセス記法だと思っています。「何
> かを加える・結合する」動作一般に「+」を使うような感覚です。
> (例がよいかどうかはあまり自信がありません。ごめんなさい。)
>
> RSS::Maker[version].newでRSS::Makerを使っているのは、現時点
> ではRSS::Makerが唯一外にでているオブジェクトなので、そいつが
> エントリポイントになるとよいと思ったからです。

 なるほど。module の [] というのはどうだろうと思ったんですが、
意外といいかもしれませんね。RSS::Maker の中というのは(同名の
メソッドよりは)収まりがいいです。

> RSS::MAKERS[version].newの方は、MAKERSという複数形の方がコン
> テナっぽさがでるかと思ったからです。
>
> []で(少し?)高度な取得処理を実行するのはそれほど珍しいこと
> ではないと思います。
>
> 例えば、HTTPヘッダを取得するAPIとして[] を使用しているオブジェ
> クトではキー(HTTPヘッダの名前)を正規化して値を返しています。
> (net/http.rbのNet::HTTPHeader、xmlrpc/httpserver.rbの
> HttpServer::Table、webrick/httprequest.rbの
> WEBrick::HTTPRequest)
>
> Array#[]は、もっと高度でインデックスをとるだけではなく、開始
> 位置と長さの2引数をとったり、Rangeをとったりもします。

 私の感覚を言うと、 [] を使うときは何のインスタンスかを意識して
いるような気がします。RSS::MAKERS[...] と書いたときは MAKERS が
いったい何なのか気になりますが、定数然とした見た目なので Array か
Hash だろうという感じなので、クラスを引くための特別なオブジェクト
です、と言われたら少し大仰な印象を受けそうです。

> ということで、私はバージョン文字列から対応するmakerクラスを
> 取得するのには[]がよいかと思っていました。

 RSS::Maker[] の方は、 RSS::Maker が module と知っているので、
[] の中で何が行われても違和感を覚えません。

 感覚的な話ばかりで恐縮ですが…。

(snip)
> > 従って、ハッシュ(に見えるもの)を露出させるよりもメソッドとして
> > 提供する方がインターフェースとしては好ましいと私は思います。
>
>
> RSS::Maker.findはどうでしょうか。

 気分的には find よりは get とか、いっそ of くらいの距離感が
しっくり来ますが、 Encoding も find なので悪くないと思います。

 ということで RSS::Maker[], RSS::Maker.find() ともに賛成です。

--
Akinori MUSHA / http://akinori.org/

In This Thread