2

配列に要素のリストがあるとしますが、それらを 2 つのグループに分割する論理的な方法があります。その基準に基づいて、これらの要素を 2 つの小さな配列に入れたいと思います。これが機能し、私が何を意味するかを説明するのに役立つコードです。

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"]

1 回のメソッド呼び出しで a と b の両方を割り当てる方法を見た覚えがあるようですが、それが何であったかは覚えていません。それは次のようになります

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

私は気が狂っていますか、それとも Ruby や Rails にそのようなメソッドは存在しますか?

4

1 に答える 1

14

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

matching, non_matching = foo.partition {|element| element.length == 1}
于 2012-09-02T01:02:36.673 に答える