From: "Matthias Wächter" Date: 2007-08-28T06:08:55+09:00 Subject: Re: More convenient #p? On 27.08.2007 19:02, Trans wrote: >>> Has anyone else every wished #p would passthru it's argument? Ie. Work >>> like this: >>> def p(x) >>> puts x.inspect >>> x >>> end Here is a version that also handles multiple parameters required for correct automatic array building like in "a,b,c=p(1,2,3)": module Kernel alias_method :old_p, :p def p *args old_p(*args) args.length>1 ? args : args[0] end end If multiple parameters are given, let's return the array we already have. Don't return an array if it's just one parameter (the usual case). Note that the case of no parameter results in nil returned (certainly). a=p("Hi!") # >> "Hi!" b,c,d=p("Lo!",[3,4],:sym) # >> "Lo!" # >> [3, 4] # >> :sym e=p(["Me!"]) # >> ["Me!"] f=p # >> nil p(a,b,c,d,e,f) # >> "Hi!" # >> "Lo!" # >> [3, 4] # >> :sym # >> ["Me!"] # >> nil Anyway, great idea! :) - Matthias