青山です。

On Wed, 1 Sep 1999 12:04:33 +0900,
hisanori / sitc.toshiba.co.jp wrote:

> 僕は全部Arrayがいいです。Meeting2000で使っているルーチンではArrayを返
> してます。

ありがとうございます。使い込まれている方のご意見はとてもありがたいです。

> scenario2
> if cgi["name1"].kind_of?(String)
>   cgi["name1"]に対する処理
> else
>   cgi["name1"].each{ ... }
> end

Array(cgi["name1"]).each{ ... }

という手もありますが、そうですね。やはりあまり美しくはないような。

> '[0]'が確かにちょっと気持ち悪いですが、それは仕方がないでしょう。

そう言って頂けると嬉しいです。python 方式になるほどと思いつつも、複数
のデータが返って来る場合には、データの数ではなく、型によって判定すると
いうちょっと気持良くない事になるのが引っかかっていました。

他のみなさんはいかがでしょうか?  単数の場合に [0] を付ける手間という
か、ちょっとした見た目の冗長さ(?)と、複数の場合に、複数である事をデー
タの数ではなく、型で判断する事のちょっとした違和感、どちらが大きいでしょ
うか?

> # 実際の処理に入る前にデータがあるかどうかは、チェックしているものとし
> # ます。

ここも検討対象の1つでした。cgi["name1"][0] のようにした場合、
cgi.has_key?("name1") のようなチェックを行わず、かつ name1 が含まれな
かった場合に、エラーが発生するという事ですね。

これに対しては cgi["name1"].to_s とすると、nil も to_s を持つという事
から、name1 が含まれなかった場合もそのまま動いてしまう手がありますが、
やはり本筋としては、cgi.has_key?("name1") などであらかじめチェックして
おくか、例外処理が手軽な事を利用して、rescue の方がいいような気がして
います。


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>