From: Wakou Aoyama Date: 2002-07-03T11:27:54+09:00 Subject: [ruby-dev:17634] Re: substitution at when-clause 青山です。 On Wed, Jul 03, 2002 at 08:45:21AM +0900, Yukihiro Matsumoto wrote: > 正直、 === がどちらをレシーバにするかを覚えておくのは結構面 > 倒なようで、間違って逆に覚えている人をみかけます。となると、 > ===を使うことを積極的に考える必要があるとなるとcaseの難しさ > がより増えてしまうような。 あ、この気持はわかります。私もなんとなくそれが面倒で、case よりも elsif を良く使っていますし。 ところで、今回の場合には、Regexp.last_match をもうちょっとなんとか使い やすく出来たら、という方向の見直しも出来たら良いなと思います。 Regexp.last_match は、nil を返す場合があるので、Regexp.last_match[1] は、そのままでは $1 の代用になりません。 >> Regexp.last_match[1] NoMethodError: undefined method `[]' for nil ここをなんとか乗り切る案ができれば、$1 については改善されるような気が します。 (もっとも、最近では if match = //.match(""); match[1]; end という記述 を利用しているので、$1 と Regexp.last_match の件への気持は薄らいでいま すが) --> すると、今回の、match 後の結果を代入できると嬉しい、という流れにな るわけで、case と === の間違いやすさとは別に、代入できたら使いでがあり そう、という事には賛成派ではあります。 -- 青山 和光 Wakou Aoyama