From: wakou@... Date: 1999-09-01T10:36:42+09:00 Subject: [ruby-list:16398] Re: Ruby 1.4.0 青山です。 On Fri, 13 Aug 1999 21:59:10 +0900, matz@netlab.co.jp (Yukihiro Matsumoto) wrote: > |lib/CGI.rbが入ってないみたいです。 > > あ、これはワザとです。というのも、CGI.rbは大きな仕様変更の予 > 定があるのに間に合わなかったから。現状のものが必要であれば、 > ftpでcontribから持っていってください。 遅れまして申し訳ありません。仕様変更というのは、現在はフォームやクッキー のデータを常に Array で返しているものを、その名前に対するデータが1つ の場合は、String にしてはどうかという案です。 現在は常に Array なので、次のような感じです。 cgi = CGI.new value = cgi["name1"].join(", ") value = cgi.cookies["name1"].join(", ") しかし、1つの名前で複数のデータが返って来る場合というのは、チェックボッ クスグループか、スクロールリストぐらいで、多くの場合は1つの名前で1つ のデータです。 そこで、1つの名前に1つのデータの場合は、String を返してしまってはど うかという事です。 value = cgi["name1"] value = cgi.cookies["name1"] これで多くの場合の記述を簡易化できます。そして、複数になる可能性のある 名前に対してだけ、つぎのようにします。 if cgi["name1"].kind_of?(String) value = cgi["name1"] else value = cgi["name1"].join(", ") end if cgi.cookies["name1"].kind_of?(String) value = cgi.cookies["name1"] else value = cgi.cookies["name1"].join(", ") end Python のライブラリがこんな感じらしいそうです。 少し遅くなるかもしれませんが、場合分けせずに Array にまとめてしまうと すっきりしますね。 value = Array(cgi["name1"]).join(", ") value = Array(cgi.cookies["name1"]).join(", ") -- 青山 和光 Wakou Aoyama