patternrubyCritical
What does map(&:name) mean in Ruby?
Viewed 0 times
namerubydoesmeanwhatmap
Problem
I found this code in a RailsCast:
What does the
def tag_names
@tag_names || tags.map(&:name).join(' ')
endWhat does the
(&:name) in map(&:name) mean?Solution
It's shorthand for
If
The
tags.map(&:name.to_proc).join(' ')If
foo is an object with a to_proc method, then you can pass it to a method as &foo, which will call foo.to_proc and use that as the method's block.The
Symbol#to_proc method was originally added by ActiveSupport but has been integrated into Ruby 1.8.7. This is its implementation:class Symbol
def to_proc
Proc.new do |obj, *args|
obj.send self, *args
end
end
endCode Snippets
class Symbol
def to_proc
Proc.new do |obj, *args|
obj.send self, *args
end
end
endContext
Stack Overflow Q#1217088, score: 551
Revisions (0)
No revisions yet.