2013-05-29 23 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