Подтвердить что ты не робот

Ruby Select и Reject одним способом

Есть ли встроенный метод, который бы объединил функции select (найти все, что блок приравнивается к true) и отклонить (найти все, что блок приравнивается к false)?

Что-то вроде

good, bad = list.magic_method { |obj| obj.good? }

Не было бы слишком сложно сделать это сам, но NIH и все такое.:)

4b9b3361

Ответ 1

Похоже, что Enumerable.partition - это именно то, что вам нужно.

= Enumerable.partition

(from ruby core)
------------------------------------------------------------------------------
  enum.partition {| obj | block }  -> [ true_array, false_array ]
  enum.partition                   -> an_enumerator

------------------------------------------------------------------------------

Returns two arrays, the first containing the elements of enum for
which the block evaluates to true, the second containing the rest.

If no block is given, an enumerator is returned instead.

   (1..6).partition {|i| (i&1).zero?}   #=> [[2, 4, 6], [1, 3, 5]]

Интересно, я не знал, что это было. ri - удивительный инструмент...