2013-05-02 57 views
4

我在狂歡商業中見過。什麼意思 - >在Ruby中的意思是

go_to_state :confirm, if: ->(order) { order.confirmation_required? } 

那麼,什麼會做那個符號?

+0

我已在谷歌搜索,但顯示沒有相關結果 – shajin 2013-05-02 12:11:29

+3

使用此網站的搜索框。搜索'[ruby]「 - >」'或其他您想知道的操作符。 – Mat 2013-05-02 12:14:32

+1

看起來像是'lambda'的符號 – 2013-05-02 12:14:44

回答

4

這是一個拉姆達文字。檢查此示例:

> plus_one = ->(x){x+1} 
=> #<Proc:[email protected](irb):3 (lambda)> 
> plus_one.call(3) 
=> 4 

lambda文字是Proc的構造函數。 A Proc是一種將代碼塊分配給變量的方法。在此之後,您可以根據需要多次調用您的代碼塊,並使用不同的參數。

這是如何在ruby中傳遞「function」作爲參數的。在很多語言中,你可以傳遞一個函數的引用。在ruby中,你可以傳遞一個Proc對象。

6

在Ruby 1.9中,您可以使用刺運算符->來創建lambda。

l1 = lambda { puts "I'm a lambda" } 
l2 = -> { puts "I'm a lambda" } 

該運算符還接受參數。

l1 = lambda(name) { puts "I'm a #{name}" } 
l2 = ->(name) { puts "I'm a #{name}" }