Ruby on rails 谁能解释一下'&';在这段ruby代码中?

Ruby on rails 谁能解释一下'&';在这段ruby代码中?,ruby-on-rails,ruby,rails-activerecord,Ruby On Rails,Ruby,Rails Activerecord,有人能解释一下在这段ruby代码中“&”的用法吗 s.feature_addons.select(&:is_active?) 这意味着: s.feature_addons.select { |addon| addon.is_active? } &调用对象上的到_proc,并将其作为块传递给方法 class Symbol def to_proc Proc.new { |*args| args.shift.__send__(self, *args) } end end

有人能解释一下在这段ruby代码中“&”的用法吗

s.feature_addons.select(&:is_active?)
这意味着:

s.feature_addons.select { |addon| addon.is_active? }
&
调用对象上的
到_proc
,并将其作为块传递给方法

class Symbol
  def to_proc
    Proc.new { |*args| args.shift.__send__(self, *args) }
  end
end
您可以在其他类中定义
to_proc
方法:

它意味着:

s.feature_addons.select { |addon| addon.is_active? }
&
调用对象上的
到_proc
,并将其作为块传递给方法

class Symbol
  def to_proc
    Proc.new { |*args| args.shift.__send__(self, *args) }
  end
end

您可以在其他类中定义
to_proc
方法:

这是
to_proc
的快捷方式。例如,您提供的代码相当于:

s.feature_addons.select {|addon| addon.is_active?}
可以在以下位置找到一些关于它的旧文档:

(由ActiveSupport提供时)

然后,它在1.9中成为Ruby核心的一部分


这是
到\u proc
的快捷方式。例如,您提供的代码相当于:

s.feature_addons.select {|addon| addon.is_active?}
可以在以下位置找到一些关于它的旧文档:

(由ActiveSupport提供时)

然后,它在1.9中成为Ruby核心的一部分


您可以使用此语法作为应用于整个集合的方法的简写

其功能与:

s.feature_addons.select { |a| a.is_active? }
您可以将其用于任何集合,例如:

User.all.map(&:id)

etc

您可以使用此语法作为应用于整个集合的方法的简写

其功能与:

s.feature_addons.select { |a| a.is_active? }
您可以将其用于任何集合,例如:

User.all.map(&:id)

etc

这只是
s.feature_addons.select{a | a.is_active?}的快捷方式
。您经常可以通过
映射
注入
和其他方法看到它,而不仅仅是通过
选择
|@not rightfold链接的问题在这方面有一个很好的讨论。@sawa提供了一个很好的解释。它只是
s.feature_addons.select{a | a.is_active?}
的快捷方式。您经常可以通过
映射
注入
和其他方法看到它,而不仅仅是通过
选择
|“与@not righfold相关联的问题对此进行了更好的讨论。”sawa给出了一个很好的解释。