【问题标题】:Ruby map method syntax question [duplicate]Ruby map 方法语法问题[重复]
【发布时间】:2011-07-11 01:19:55
【问题描述】:

可能重复:
What does map(&:name) mean in Ruby?

我在看railscasts more virtual attributes episode。在那一集中,ryan 有一次使用了我无法理解的 map 方法语法,有人可以解释一下吗?

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

tags 是Tag Model 的一个对象,它有一个name 属性。我能够理解这个的含义(我想是这样:))。所有标签对象的名称属性都作为数组检索并基于“”进行连接。但是&:name是怎么回事

谢谢

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 railscasts


【解决方案1】:

&Symbol#to_proc 的快捷方式,它将您传递给它的符号转换为对象上的方法名称。所以&:name 转换为{ |reciever| receiever.name } 然后传递给map 方法。

这是使您的代码更加简洁并避免到处都有大量代码块的好方法。

【讨论】:

    【解决方案2】:

    它是tags.map(:name.to_proc) 的简写,就像调用tags.map{|tag| tag.name } 一样,只是将所有标签名称收集到一个数组中。

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 2011-06-04
      • 2013-05-31
      • 1970-01-01
      • 2013-05-19
      • 2012-05-12
      • 2011-04-12
      相关资源
      最近更新 更多