From: "堀川 久" Date: 2003-03-10T21:24:38+09:00 Subject: [ruby-list:37261] Re: ruby 1.8でのCGI#[]の挙動 こんにちは。 Yukihiro Matsumoto wrote in <1047246883.513678.12132.nullmailer@picachu.netlab.jp> >|特異メソッドで[]とfirstだけ定義していますが、これだけではruby 1.6用の >|スクリプトにとっては不十分ですし、かえってマーシャリングできなくなって >|いるので、まったく意味がありません。 > >いちおう、いろいろな議論を経て今のようになったので、また元に >戻すことはしたくありません。我々の基準では「まったく意味があ >りません」ではなかったので。多くのスクリプトでは > > a, = cgi["param"] > >か > > a = cgi["param"][0] > >としているだろうというのが判断基準だったわけですが、もちろん >完璧ではありません。が、完璧でないという理由で変更できないの >であれば、間違った仕様は永遠にそのままになってしまうので、そ >れはそれで嬉しくないのです。 コンパイルが不要でエラーが実行時に発生する傾向にある分、古いスクリプト が動かなくなる変更には慎重であってほしいです。 仕様を変更する場合は、原則として、新しいクラスを設けるか新しいメソッド を設けることによって行った方がいいように思います。Net::HTTPのように、 特定のメソッドを呼ぶと挙動が変わるというのも、勘弁してほしいです。 # とはいうものの、似たようなクラスが増殖したり、fooExExExのような関数 ・メソッドが増えるのも痛々しいですが。 >救済できないケースについての情報が有れば追加の支援はできると >思います。 少なくとも、empty? はあった方がいいと思います。if式で使われることがあ ります。 data = cgi["foo"].first if data ... というようなコードが多い([].first => nilを予定している)のですが、こ れを救うのは大変そうです。 -- HORIKAWA Hisashi (in Kanji: 堀川 久) Netsphere Laboratories http://www.nslabs.jp/