Use a Ruby method like a block or lambda

Updated . Posted . 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
Profile picture of Henning Koch
Henning Koch
Last edit
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra dev (2011-09-27 09:25)