From: 7stud -- Date: 2007-11-04T09:12:30+09:00 Subject: Re: Passing keyword arguments Robert Dober wrote: > On Nov 3, 2007 1:27 AM, Trans wrote: >> Lets say I have a method using the not-so-uncommon keyword options >> pattern: >> >> def foo(*args) >> opts = (Hash === args.last ? args.pop : {}) > > Hi Tom > > irb(main):001:0> def foo *args > irb(main):002:1> opts, args = args.partition{|x| Hash === x } > irb(main):003:1> opts = opts.inject{ |s,x| s.update x } > > seems this should do the trick >> ... Why not simply: def foo(*args) opts = args[0] args = args[1..-1] p opts, args end def bar(opt, *args) foo(:baz =>opt, *args) puts foo(:baz =>opt, :other => 'pie', *args) end bar(10, 20, 30) --output:-- {:baz=>10} [20, 30] {:baz=>10, :other=>"pie"} [20, 30] -- Posted via http://www.ruby-forum.com/.