このコードを見つけたのはRailsCast について:
def tag_names
@tag_names || tags.map(&:name).join(' ')
end
(&:name)
in はどういうmap(&:name)
意味ですか?
ベストアンサー1
これは略語です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