我在RailsCast中找到了以下代码:
def tag_names
@tag_names || tags.map(&:name).join(' ')
end
是什么在(&:name)
中map(&:name)
是什么意思?
这是简写 tags.map(&:name.to_proc).join(' ')
如果foo
是具有to_proc
方法的对象,则可以将其作为方法传递给方法&foo
,该方法将调用foo.to_proc
该方法并将其用作方法的块。
该Symbol#to_proc
方法最初由ActiveSupport添加,但已集成到Ruby 1.8.7中。这是它的实现:
class Symbol
def to_proc
Proc.new do |obj, *args|
obj.send self, *args
end
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句