0

ドキュメントを読んだ後、私はまだそれぞれの違いを理解しようとしています。

以下のコードで each と 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
4

2 に答える 2

5

同じように繰り返しますeachが、の目的はselect選択基準に基づいてコレクションを返すことです。anagrams << word if str_letters == word_lettersその特定のコード スニペットでは、 for eachの真の値に基づいてコレクションを返しますが、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 に答える