青山です。 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>