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
4

2 回答 2

5

尽管它以相同的方式进行迭代each,但目的select是根据选择条件返回一个集合。在那个特定的代码片段中,它根据anagrams << word if str_letters == word_letters每个的真值返回一个集合word,然后丢弃该集合。

或者,它可以这样做:

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

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

正如已经说过的,代码的作者显然不明白它是如何select工作的。

于 2013-05-29T00:47:15.890 回答
4

我不明白为什么select使用

因为该代码的作者不理解select.

于 2013-05-29T00:43:28.267 回答