From: "Jesús Gabriel y Galán" Date: 2010-03-06T05:00:21+09:00 Subject: Re: Conditional keys in hash - out of the box? On Fri, Mar 5, 2010 at 8:25 PM, Sven S. wrote: > Hi > > Cumbersome title, here's what I'd like to do both elegantly and without > monkey patching Hash: > > Say, I need to pass a hash to a method: > > mymethod :this => 'green' > > Now I'd like to include a second hash member only if a condition is met: > > mymethod :this => 'green, :that => ('blue' if condition) > > This of course leaves ":that => nil" in the hash if the condition is not > met - which is no good, the key should just not be present at all. I > could delete_if after that, but isn't there a more elegant way? I'm not sure I understand. You want too add :that => 'blue' to the hash only if condition? h = {:this => 'green'} h[:that] = 'blue' if condition mymethod h One liner: mymethod(h = {:this => 'green'} && condition ? h.merge({:that => 'blue'}) : h) A bit ugly, in my opinion. I like my first way better. Jesus.