Ruby中是否有一种方法可以根据逻辑条件将数组划分为两个较小的数组?

时间:2012-09-02 00:57:26

标签: ruby-on-rails ruby

假设我有一个数组中的元素列表,但有一种逻辑方法可以将它们分成两组。我想根据该标准将这些元素放入两个较小的数组中。以下是一些有用的代码,有助于说明我的意思:

foo = ['a', 'bb', 'c', 'ddd', 'ee', 'f']
 => ["a", "bb", "c", "ddd", "ee", "f"] 
a = foo.select{|element| element.length == 1}
 => ["a", "c", "f"]
b = foo.reject{|element| element.length == 1}
 => ["bb", "ddd", "ee"]

我似乎记得看到单个方法调用分配a和b的某种方式,但我不记得它是什么。它看起来像

matching, non_matching = foo.mystery_method{|element| element.length == 1}

我是疯了,还是Ruby和/或Rails中存在这样的方法?

1 个答案:

答案 0 :(得分:14)

是的! http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-partition

matching, non_matching = foo.partition {|element| element.length == 1}