配列を含む NSArray を平坦化するための私の典型的なパターンは次のようになります。
NSMutableArray *flattenedArray = [NSMutableArray array];
for (NSArray *innerObjects in arrayToFlatten) {
[flattenedArray addObjectsFromArray:innerObjects];
}
(または @unionOfArrays KVC コレクション演算子を使用します)。
RXCollections を使用するのに最適なものは何ですか? 私は持っている:
NSArray *flattenedArray = RXConstructArray(RXFold(arrayToFlatten, [NSMutableArray array], ^id(id memo, id each,
bool *stop) {
NSMutableArray *accumulator = memo;
[accumulator addObjectsFromArray:each];
return accumulator;
}));
しかし、NSMutableArray アキュムレータの使用は、私には違和感があります。
ロブの答えを無意味にしないように、上記のオリジナルを残しましたが、(これまでのところ)改善されたバージョンは次のとおりです。
NSArray *flattenedArray = RXFold(arrayToFlatten, [NSMutableArray array], ^id(NSMutableArray *accumulator, NSArray *array,
bool *stop) {
[accumulator addObjectsFromArray:array];
return accumulator;
});