How can you pass a function by name in Ruby? (I've only been using Ruby for a few hours, so I'm still figuring things out.)
nums = [1, 2, 3, 4]
# This works, but is more verbose than I'd like
nums.each do |i|
puts i
end
# In JS, I could just do something like:
# nums.forEach(console.log)
# In F#, it would be something like:
# List.iter nums (printf "%A")
# In Ruby, I wish I could do something like:
nums.each puts
Can it be done similarly concisely in Ruby? Can I just reference the function by name instead of using a block?
People voting to close: Can you explain why this isn't a real question?
You can do the following:
nums = [1, 2, 3, 4]
nums.each(&method(:puts))
This article has a good explanation of the differences between procs, blocks, and lambdas in Ruby.
Can I just reference the function by name instead of wrapping it in a block?
You aren't 'wrapping' it -- the block is the function.
If brevity is a concern, you can use brackets instead of do..end
:
nums.each {|i| puts i}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With