title: How can I prevent a positional argument from being expanded into keyword arguments?
body: <p>I'd like to have a method that accepts a hash and an optional keyword argument. I tried defining a method like this:</p>
  
  <pre><code>def foo_of_thing_plus_amount(thing, amount: 10)
    thing[:foo] + amount
  end
  </code></pre>
  
  <p>When I invoke this method with the keyword argument, it works as I expect:</p>
  
  <pre><code>my_thing = {foo: 1, bar: 2}
  foo_of_thing_plus_amount(my_thing, amount: 20) # =&gt; 21
  </code></pre>
  
  <p>When I leave out the keyword argument, however, the hash gets eaten:</p>
  
  <pre><code>foo_of_thing_plus_amount(my_thing) # =&gt; ArgumentError: unknown keywords: foo, bar
  </code></pre>
  
  <p>How can I prevent this from happening? Is there such a thing as an anti-splat?</p>