map(&:name)在Ruby中是什么意思?

科利马科

我在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章