每个之间的区别和下面的代码选择?红宝石

时间:2013-05-29 00:38:18

标签: ruby iterator

在阅读文档后,我仍然试图弄清楚每个选项之间的区别。

有人可以向我解释为什么每个和select都可以在下面的代码中替换? 我不明白为什么使用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 个答案:

答案 0 :(得分:5)

虽然它以each的方式迭代,但select的目的是根据选择标准返回一个集合。在该特定代码段中,它根据每个anagrams << word if str_letters == word_letters的{​​{1}}的真值返回一个集合,但随后丢弃该集合。

或者,它可以这样做:

word

如前所述,代码的作者显然不了解def word_unscrambler(str, words) str_letters = str.split("").sort words.select { |word| str_letters == word.split("").sort } end 的工作原理。

答案 1 :(得分:4)

  

我不明白为什么使用select

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