2014-04-14 83 views
1
options_from_collection_for_select(['all'], 'to_s', -> (input) { t("admin.mystring") }) 

我在Haml文件中找到這行代碼。有人能解釋一下->(input)是做什麼的?什麼時候在ruby中使用這個符號->紅寶石符號 - >做什麼?

回答

6

- >(輸入)做什麼?

->() { .. }被稱爲staby proc。

何時使用此符號 - >在紅寶石中?

當您想使用Kernel#lambda方法使用Proc對象時。 ->() { .. }Kernel#lambda的語法糖。

紅寶石1.9.1介紹了這種新的,更簡潔的語法來創建lambda方法。

stab operator的名稱與刀或刺穿動作相似:->。在運算符的插入部分之後,有一個參數列表,就像在普通方法中一樣。然後,一個正常的大括號中的Ruby塊。

由於lambda的參數列表是一個形式參數列表,與塊參數列表相反,支持其他幾個功能,如默認參數值。 A lambda位於匿名塊或閉包與正式命名方法之間的某處。

+0

Google也被稱爲「stabby lambdas」。 – tadman

+0

@tadman應該按照你的建議重寫'staby proc'。 –

+0

它有幾個術語,但這是其中之一。它也幫助人們在這裏找到答案。 – tadman