2016-05-24 80 views
2

之間的區別在這兩種情況下使用&有什麼區別?呼叫和接收參數與&

  1. 調用fun1

    fun1(&toproc) 
    
  2. 在函數定義:

    def fun1(&toblock) 
        # ... 
    end 
    

難道接收與&toblock一個參數時,它被轉換爲一個Proc 和用於另一種情況是它被轉換爲塊?

+0

不太重複的,但這個問題的答案回答你的問題:http://stackoverflow.com/questions/28439734/purpose-of-ampersand-in -ruby-for-procs-and-calling-methods –

+0

感謝您的鏈接 –

回答

3

在第一種情況下,toproc是一個包含proc的變量,如果不是,則會將其轉換爲proc。

在第二種情況下,我們明確聲明該函數帶有一個塊參數,我們可以通過名稱toblock來引用該塊參數。

本文給出了一個很好的解釋:http://www.skorks.com/2013/04/ruby-ampersand-parameter-demystified/