Skip to content

Instantly share code, notes, and snippets.

@benhamill
Created February 2, 2013 04:29
Show Gist options
  • Select an option

  • Save benhamill/4696115 to your computer and use it in GitHub Desktop.

Select an option

Save benhamill/4696115 to your computer and use it in GitHub Desktop.
How I Want Ruby's `Object#method` To Work

How I Want Ruby's Object#method To Work

The simple case, is this guy:

> m = SecureRandom.method(:hex)
=> #<Method: SecureRandom.hex>
> m.call
=> "5928aab178404945fb560a249b67a000"
> m.call
=> "d5ba69ac2e9dc8632aee7bf3212f6d67"

But, what I want, is a fully curried function. Something like this:

> m = SecureRandom.method(:hex, 6)
=> #<Method: SecureRandom.hex>
> m.call
=> "bd131d38de3c"
> m.call
=> "4e5a20936be0"

But Object#method doesn't take more than one argument. So, to get the effect I want, I have to do something like this:

> m = -> { SecureRandom.hex(6) }
=> #<Proc:0x000000034144b8@(pry):7 (lambda)>
> m.call
=> "bd131d38de3c"
> m.call
=> "4e5a20936be0"

It's not a huge thing, just a little sugar, but still.

@jcsalterego
Copy link

Name my method Object#cmethod and call it a day :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment