こんにちは山崎です.

On Wed, 30 Aug 2006 06:29:39 +0900
rubikitch <rubikitch / ruby-lang.org> wrote:

> From: Daisuke Yamazaki <yamajaki / gmail.com>
> Subject: [ruby-list:42765] ?がメソッド名の途中にあるのはNG?
> Date: Wed, 30 Aug 2006 04:29:36 +0900
>
> > irbのメソッドcompletionとrefeの統合をしたいと思い.method_missingを利用し
> > た下記のようなプログラムを書いてみました.
> 
> おもしろい案ですね。
> しかし、method_missingの濫用は得策ではありません。

たしかにそうなんですが,Rubyにはメソッドチェイン上で
メソッドクラスを取得する方法がないようだったので,苦肉の策でした.

↓こんな感じにかければうれしかった.
irb(main):001:0> Array.new.inject.help

 
> 参考までにihelpはriと統合しています。
> http://raa.ruby-lang.org/list.rhtml?name=ihelp


なるほど!これも便利そうです.参考にさせてもらいます.

> 
> > Rubyの文法的に?がメソッド名の途中にあるのが問題のようなのですが,
> > どうすればいいのか教えてもらえますか?
> 
> 仕様なのでどうしようもありません。

これなのですが,Rubyのドキュメントを読む限りメソッド名で?を特別扱いすると
いう記述はないようなのですが,どのあたりに書いてある話でしょう?
確かに

http://www.ruby-lang.org/ja/man/?cmd=view;name=%BB%FA%B6%E7%B9%BD%C2%A4#a.bc.b1.ca.cc.bb.d2

ここには識別子として?を使うのはNGだと書いてますが,
実際メソッド定義では?付きはありになってます.parse.yを
ざっと眺めてみると?の時は解析時のステータスによって
分岐してるっぽく見えるので万々一にもバグだったりしたら
うれしいなぁと(^^;


> なので。ihelpに倣ってrefeメソッドを定義するほうが現実的です。

そうですね.でもメソッドチェインで補完しながら調べられる今の方法も
捨てがたいんです.
-- 
Daisuke Yamazaki <yamajaki / gmail.com>