yuumi3 です、
るびきち さん、ありがとうございます。

debugprint コレコレコレ・・・ です!

そうか メソッドの本体をブロックとして渡せるんですね ^^)
ありがとうございます。
   
tracerは情報出すぎでした・・・


ありがとうございます。

rubikitch wrote:
> From: Yuumi Yoshida <yuumi3 / ey-office.com>
> Subject: [ruby-list:42614] Re: メソッドの戻り値を知る方法
> Date: Sat, 29 Jul 2006 15:05:59 +0900
> 
>> なるほど、これなら タイプが少なくて良いですね!
> 
> はい。手軽です。
> 
>> ただし、今回ほしいのは初心者が使えるような、なるべく頭を使わずに機械的に
>> 戻り値を表示する方法がないかな? と考えています。
>>
>> こんな感じで
>>
>> def max(a, b)
>>   print_arguments(a, b)
>>
>>   if (a > b)
>>    a
>>   else
>>    b
>>  end
>>
>>  print_return_value
>> end
> 
> ではこれでどうでしょ?
> debugprintはブロックを持ちます。
> 引数と戻り値を表示したいならば、debugprintの引数にメソッドの引数を、
> メソッドの最後にendを置きます。
> 
> なお、debugprintは将来外すと思われるのでインデントはそのままにしてあります。
> 
> def debugprint(*args)
>   printf("args = %s\n", args.map{|x| x.inspect}.join(", "))
>   ret = yield
>   printf("ret = %s\n", ret.inspect)
>   ret
> end
> 
> def max(a, b)
>   debugprint(a, b) do   # *
> 
>   if (a > b)
>    a
>   else
>    b
>   end
> 
>   end                   # *
> end
> 
> max(1,3)
> 
> 
>> または、set_trace_func()などを使った、メソッド単位のトレースが出来るモ
>> ジュールとかあるでしょうか?
> 
> set_trace_func() は debug.rb, trace.rb, profile.rbなどに使われています。
> 
> tracerはどうでしょう?
> 
> require 'tracer'
>  
>   Tracer.on によりトレース出力を有効にする。
>  
>   Tracer.off によりトレース出力を無効にする。
>  
>   また、ブロック付きで Tracer.on を呼び出すと、そのブロック内のみトレースを出力する
>   
> 
> --
> rubikitch
> http://www.rubyist.net/~rubikitch/
> 


-- 

♪  吉田 裕美 (Yuumi Yoshida)
♪    Blog      http://d.hatena.ne.jp/yuum3/
♪    HomePage  http://www.ey-office.com/