是否有任何内置方法可以将Enumerable.select
(查找块等于true的所有内容)和Enumerable.reject
(找到块等于false的所有内容)的函数组合在一起?
像
这样的东西good, bad = list.magic_method { |obj| obj.good? }
答案 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
是一个了不起的工具......