4

重複の可能性:
Rubyでmap(&:name)はどういう意味ですか?

私はrailscastsより多くの仮想属性エピソードを見ていました。そのエピソードでは、ある時点で、ライアンは私が理解できないマップメソッド構文を使用していました。誰かがそれを説明してもらえますか?

tags.map(&:name).join(' ')

tagsは、name属性を持つTagModelのオブジェクトです。私はこれの意味を理解することができます(私はそう思います:))。すべてのタグオブジェクトのname属性は配列として取得され、''に基づいて結合されます。しかし、どうしたの?&:name

ありがとう

4

2 に答える 2

9

は、渡したシンボルをオブジェクトのメソッド名に変換する&ショートカットです。Symbol#to_procしたがって&:name{ |reciever| receiever.name }これは map メソッドに渡されます。

これは、コードをより簡潔にし、あちこちに大量のブロックを配置するのを避けるための優れた方法です。

于 2011-03-08T11:41:35.697 に答える
6

これは which の省略形で、tags.map(:name.to_proc)呼び出しtags.map{|tag| tag.name }に似ていて、すべてのタグ名を配列に収集するだけです。

于 2011-03-08T11:39:58.227 に答える