Enumerable基礎レベル

次の2つの式の返り値の違いとして正しいものはどれですか?

charges.select { |charge| charge[:amount] >= 1000 }
charges.find { |charge| charge[:amount] >= 1000 }
  • 1`select` は最初の1件、`find` は条件に合う全件を配列で返す
  • 2`select` は条件に合う全件を配列で返し、`find` は最初の1件を返す
  • 3どちらも条件に合う全件を配列で返す
  • 4どちらも条件に合う最初の1件を返す

解説

select は条件に合う要素をすべて集めた配列を返します。一方、find は条件に合う最初の1件だけを返します。課金コードで全件対象にすべきところを find にすると、1件分しか計算されず、金額が合わないバグにつながります。

問題一覧へ戻る