From: Yusuke ENDOH <mame@...> Date: 2006-11-02T02:47:32+09:00 Subject: [ruby-dev:29736] [提案] Kernel#p をもっと便利に 遠藤侑介と申します。 日頃から思っていたことを提案してみます。 p は nil ではなく引数を返してくれると嬉しいと思います。例えば: def foo ... str.gsub(...) end というコードをデバッグしていて、返り値を見たくなったとき def foo ... x=str.gsub(...) p x x end と書かないといけないのが def foo ... p str.gsub(...) end の 2 ストロークで済みます。 また、関数形式でない形式で呼び出した場合、self を出力し、 self を返すというのもいいと思います。 def foo ... str.gsub(...).p end Ruby だけで近似的に実現するなら以下のような感じでしょうか。 class Object def p(*a) if a.empty? then Kernel.p(self) self else Kernel.p(*a) a.last end end end 挙動の変更ではありますが、p はデバッグ用途のメソッドだと思われるので 実害はほぼゼロだと思います。 # 1 文字で nil を作る方法がなくなりそうなので codegolf では困るかも? よろしくご検討ください。 -- Yusuke ENDOH <mame@tsg.ne.jp>