From: Yukihiro Matsumoto Date: 2007-03-20T17:14:11+09:00 Subject: [ruby-dev:30652] Re: YARVでのalias名の取得方法 まつもと ゆきひろです In message "Re: [ruby-dev:30651] Re: YARVでのalias名の取得方法" on Tue, 20 Mar 2007 16:58:17 +0900, SASADA Koichi writes: |Yukihiro Matsumoto wrote: |> あるのかないのかよくわかりませんが、「できるけど今はない」と |> いう意味だと解釈しました。 | | いえ、「今はあります」。だけど、出来れば削りたいところです。 なるほど。 |> でも、__callee__がないとエラー時に |> どのメソッドを呼んだのか分からなくないですか。あ、YARVはエラー |> 時にはいつも__method__相当を表示しているのか...そうか。 | | エラー時に、というのはスタックトレースの話でしたっけ。これは、どういう |ものであるべきでしょうか。 今調べたらcalleeが使われていたのは * rb_notimplement() * rb_secure() * rb_check_safe_obj() * specific_eval() * rb_f_callee_name() ですね。最初の3つはエラーが起きた関数名を得るのに使っていま す。alias名でないと困るかというとRubyで定義されたものに限っ ては問題ではないかもしれませんね。Cで定義されたものをaliasを 使ってボディを使いまわすとかするとエラーメッセージがわかりに くくなるかもしれません。が、妥協可能でしょう。 4番目は引数の数チェックです。これは呼び出したメソッド名でな いとまずいのですが、YARVでは実際のメソッド呼び出し前に引数の チェックは終わっているような気がしますので、そうであれば問題 ありません。 最後のは今回のですが、他で問題なければ__callee__はなくすので も良いかもしれません。 |でしょうか。でも、define_method も普通のメソッドも同じ挙動にしろといわれ |るんでしょうね。どうやって実装すればいいんだろ。 やるなら、同じ挙動にするんでしょうね。上での考察がありますか ら、やらないという選択肢がないとは言いません。 まつもと ゆきひろ /:|)