Ruby Выбрать и Отклонить одним способом - PullRequest
24 голосов
/ 21 июля 2011

Существует ли какой-либо встроенный метод, который бы объединял функции Enumerable.select (найти все, что соответствует блоку в true) и Enumerable.reject (найти все, что в блоке равно false)?

Что-токак

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

1 Ответ

35 голосов
/ 21 июля 2011

Похоже, что 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 удивительный инструмент ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...