小编典典

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

all

我在RailsCast 中找到了这段代码:

def tag_names
  @tag_names || tags.map(&:name).join(' ')
end

(&:name)in是什么map(&:name)意思?


阅读 123

收藏
2022-03-10

共1个答案

小编典典

这是简写tags.map(&:name.to_proc).join(' ')

如果foo是具有to_proc方法的对象,则可以将其传递给方法 as &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
2022-03-10