> -----Original Message----- > From: Tanaka Akira [mailto:akr / m17n.org] > > /(?<name>...)/.vmatch("abc") > > > .... > というものなわけですが、後者の要求を満たそうとすると、どうしてもリテラ > ルとそれ以外の式を別に扱う必要があります。そのように式として評価すると > 同じ値になるのに異なる扱いをするという仕掛けには、普通のメソッド呼び出 > しという形式はあまりに普通すぎて、その特別扱いが違和感を生じるように思 > います。 メソッドコール(vmatch)の場合には、レシーバがリテラルでも変数でも ローカル変数に結果をmapする、というつもりでした。 正規表現が変数にセットされているからといっても、予測不可能なほど 変化する場合だけとは限らないので、機能として提供されていても良いかなと 考えていたのですが、必要性は低いかもしれません。 > それに対し、= の左辺は評価される式じゃありませんから違和感がないわけで > すが、先に述べた通り他の = との返値に関する一貫性の問題があります。 > > で、もしかしたら、=~ や when が > > /(?<name>...)/ =~ "abc" > > case "abc" > when /(?<name>...)/ > ... > end > > という形で使われた時を特別扱いするのがいいのではなかろうか、という気が > して来ました。これらは、形としてはメソッド呼び出しではないので、リテラ > ルの特別扱いによる違和感が少ないですし、新しい記法を導入しないので既存 > の構文と自然に融合します。 賛成です。 ただ、named groupの導入からローカル変数へ反映させる機能追加までに 時間がかなり空いてしまうと、新しい記法にしなければならなくなるかも。 -- 小迫@出向中