2010-09-22 103 views
2

正確:Ruby on Rails的3編程的問題

@teammates = Roster.all.sort_by(&:level) 

失敗:

@teammates = Roster.all.sort_by(:level) 

什麼是&盈的:水平呢?它是否像C++一樣引用?

預先感謝

回答

1

&symbol符號是由導軌增加了一些語法糖。它被稱爲to_proc的符號,可用於任何期望接收Proc的方法。

Array.sort_by需要一個proc,這就是爲什麼只傳遞符號失敗。符號to_proc語法安排接收者,在這種情況下,sort_by接收包含proc內調用的方法名稱的proc。

@teammates = Roster.all.sort_by(&:level) 

是相當於

@teammates = Roster.all.sort_by{ |obj| obj.level } 
+0

如何Rails的增加這句法? – panzi 2011-02-10 17:25:56