我扁平化包含数组的 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 累加器的使用对我来说很不协调。
我保留了上面的原件,以免对 Rob 的回答胡说八道,但(迄今为止)改进的版本是:
NSArray *flattenedArray = RXFold(arrayToFlatten, [NSMutableArray array], ^id(NSMutableArray *accumulator, NSArray *array,
bool *stop) {
[accumulator addObjectsFromArray:array];
return accumulator;
});