From: Daisuke Yamazaki Date: 2006-08-30T14:13:29+09:00 Subject: [ruby-list:42768] Re: ?がメソッド名の途中にあるのはNG? こんにちは山崎です. On Wed, 30 Aug 2006 06:29:39 +0900 rubikitch wrote: > From: Daisuke Yamazaki > 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