2011-03-03 65 views
1

我開始習慣Ruby/Rails,但必須承認,當我看到一個陌生的block時,我仍然看起來很尷尬。採取下面的代碼:關於理解塊和塊變量的基本Ruby/Rails問題

(5..10).reduce(0) do |sum, value| 
    sum + value 
end 

知道它做什麼......可是,一個人如何知道傳入Ruby中塊參數的順序?他們是否按順序?你怎麼快速知道他們代表什麼?

我假設你必須看看源代碼(或文檔)來揭示什麼被放棄......但是有沒有捷徑?我想我很想知道如何快速辨別一個塊在做什麼?!?應該如何看待/解釋塊?

回答

1

當你編寫代碼時,除了檢查文檔外沒有別的辦法 - 即使Ruby在這類事情中是非常一致和一致的,所以你經常會指望事情按照特定的方式工作。另一方面,當你閱讀代碼時,你可以希望編碼器已經足夠聰明並且足夠使用一致的變量名稱。在您的例子

(5..10).reduce(0) do |sum, value| 
    sum + value 
end 

有一個,如果變量被稱爲sumvalue理由! :-)類似於

(5..10).reduce(0) {|i,j|i+j} 

當然是相同的,但可讀性較差。所以這裏的教訓是:編寫好的代碼,並且您將傳達一些信息,而不僅僅是對計算機的指令!

2

你只需要在文檔中查看它,直到它被記住爲止。我仍然遇到reduce和其他一些問題。這就像試圖記住普通方法的參數順序。程序員必須用幾乎所有的語言來處理這個問題。