在阅读文档后,我仍然试图弄清楚每个选项之间的区别。
有人可以向我解释为什么每个和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
答案 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
。