Ruby Select和Reject在一个方法中

时间:2011-07-21 15:27:22

标签: ruby arrays select filter

是否有任何内置方法可以将Enumerable.select(查找块等于true的所有内容)和Enumerable.reject(找到块等于false的所有内容)的函数组合在一起?

这样的东西
good, bad = list.magic_method { |obj| obj.good? }

1 个答案:

答案 0 :(得分:33)

看起来好像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是一个了不起的工具......