2013-05-29 53 views
0

我仍然試圖找出每個之間的差異,並閱讀文檔後選擇。每個之間的差異,並在下面的代碼中選擇?紅寶石

有人可以向我解釋爲什麼每個和選擇都可以在下面的代碼中替換嗎? 我不明白爲什麼使用select,然後代碼編寫器將它放入一個數組? 另外,瞭解其差異的好方法是什麼?

def word_unscrambler(str, words) 
    str_letters = str.split("").sort 

    anagrams = [] 
    words.select do |word| 
    word_letters = word.split("").sort 
    anagrams << word if str_letters == word_letters 
    end 

    anagrams 
end 
+2

'select'不應該以這種方式使用。 – oldergod

回答

5

雖然它的迭代方式與each一樣,但select的用途是根據選擇條件返回一個集合。在那個特定的代碼片段中,它爲每個word返回一個基於anagrams << word if str_letters == word_letters的真值的集合,但隨後丟棄該集合。

或者,也可以做這樣說:

def word_unscrambler(str, words) 
    str_letters = str.split("").sort 

    words.select { |word| str_letters == word.split("").sort } 
end 

正如已經說過,代碼的作者顯然不知道如何select作品。

4

我不明白爲什麼select用於

因爲代碼的作者不明白select