2013-10-04 83 views
1

任何人都可以解釋在這段紅寶石代碼中使用'&'嗎?任何人都可以解釋在這段紅寶石代碼中使用'&'嗎?

s.feature_addons.select(&:is_active?) 
+1

它只是's.feature_addons的快捷方式。選擇{| a | a.is_active?}'。你會經常用'map','inject'和其他方法看到它,而不僅僅是'select'。 | –

+1

@沒有被右邊鏈接的問題有一個更好的討論。 – kristinalim

+0

@sawa提供了一個非常好的解釋[這裏](http://stackoverflow.com/questions/14881125/what-does-to-proc-method-mean)。 –

回答

5

這意味着:

s.feature_addons.select { |addon| addon.is_active? } 

&呼叫的對象上to_proc,並將它作爲一個塊的方法。

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

U可以在其它類定義to_proc方法:Examples

1

Ruby的核心部分你可以使用這個語法速記方法ŧ o適用於整個集合。

它在功能上等同於:

s.feature_addons.select { |a| a.is_active? } 

你可以用任何的集合,如使用它:

User.all.map(&:id) 

相關問題