[ruby-list:46422] "?" という名前のメソッドが作れない、という仕様

View: New views
4 Messages — Rating Filter:   Alert me  

[ruby-list:46422] "?" という名前のメソッドが作れない、という仕様

by Makoto Kishimoto :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

きしもとです

パーサコンビネータを作っていて、作ろうとしてダメだったことなのですが、
ruby の文法では foo? のようなメソッドを作ったり呼んだりできませんが、
(define_method と send で作ったり呼んだりできることは確認しました)
これは、たとえば文法上衝突するなどの、理由があってのことなのでしょうか?

なお、作っていたパーサコンビネータでは opt というメソッド名にしました。


[ruby-list:46423] Re: "?" という名前のメソッドが作れない、という仕様

by Makoto Kishimoto :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

きしもとです

> ruby の文法では foo? のようなメソッドを作ったり呼んだりできませんが、

編集しそこないました。

foo? のような名前のメソッドは可能でも、名前が単に "?" だけのメソッドは
作ったり呼んだりできませんが、

です。


[ruby-list:46425] Re: "?" という名前のメソッドが作れない、という仕様

by Yukihiro Matsumoto :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

まつもと ゆきひろです

In message "Re: [ruby-list:46423] Re: "?" という名前のメソッドが作れない、という仕様"
    on Tue, 29 Sep 2009 17:28:20 +0900, "KISHIMOTO, Makoto" <ksmakoto@...> writes:

|foo? のような名前のメソッドは可能でも、名前が単に "?" だけのメソッドは
|作ったり呼んだりできませんが、
|
|です。

「できません」。?は条件演算子(の一部)や文字リテラルに用いら
れているからです。


[ruby-list:46428] Re: "?" という名前のメソッドが作れない、という仕様

by Makoto Kishimoto :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

きしもとです

> 「できません」。?は条件演算子(の一部)や文字リテラルに用いら
> れているからです。

レシーバ省略での呼び出しに困るということになりますね。わかりました。