[ruby-list:46512] obj.? メソッド

From: "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
Date: 2009-11-04 08:00:06 UTC
List: ruby-list #46512
きしもとです

[ruby-list:46422] から始まるスレッドで一旦却下された話で、
"?" というメソッドは、レシーバを省略した呼び出しで、リテラルや三項演算子と
ぶつかるのでダメ、という話になったわけですが、

レシーバを省略しない呼び出しであれば、現在、obj.def とか obj.end とか obj.and
とか、演算子やそのほかの構文と被ってる名前でも使えるわけですよね?
そういうわけで、obj.? もあっていいんではないか、と改めて提案します。

誰がうれしいか、ということについてですが、パーサコンビネータで、
a a? b という構文規則をたとえば a >> a.opt >> b としていたものを、
a >> a.? >> b と、簡潔かつ直感的にわかりやすく書けるようになります。

リテラルや三項演算子は、def のあとや obj. のあとの文脈で、
def や end や and に比べて、特別でしょうか?

In This Thread

Prev Next