Use a Ruby method like a block or lambda

Posted Over 12 years ago. Visible to the public.

Sometimes you want to use a vanilla Ruby method like a block. You can use Object#method Show archive.org snapshot to obtain a method reference that responds to #call:

foo_plus = "foo".method(:+)
foo_plus.call("bar") # => "foobar"

The method reference also understands #to_proc so you can feed it to block-taking methods by prefixing it with &:

printer = method(:puts)
[1, 2, 3].each(&printer) # will print one line per number
Henning Koch
Last edit
About 12 years ago
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra dev (2011-09-27 09:25)