class Hash
  def destruct(&block)
    keys = block.parameters.map{|a| a[1]}
    block.call(*self.values_at(*keys))
  end
end

h = { a: 10, foo: 'bar', c: true }

h.destruct { |foo, a|
  puts "foo: #{foo} a: #{a}"
  # => foo: bar a: 10
}