feat:Manage Demo Project

This commit is contained in:
pengfei.zhou
2019-11-19 13:46:29 +08:00
parent f0430a32a7
commit 3426fcd102
11 changed files with 227 additions and 50 deletions

View File

@@ -27,3 +27,21 @@
- (void)let:(void (^)(id it))block;
@end
@interface NSArray <ObjectType> (Doric)
- (void)forEachIndexed:(void (NS_NOESCAPE ^)(ObjectType obj, NSUInteger idx))block;
- (NSArray *)mapIndexed:(id (NS_NOESCAPE ^)(ObjectType obj, NSUInteger idx))block;
- (NSArray *)flatMapIndexed:(NSArray *(NS_NOESCAPE ^)(ObjectType obj, NSUInteger idx))block;
- (NSArray *)filterIndexed:(BOOL (NS_NOESCAPE ^)(ObjectType obj, NSUInteger idx))block;
- (void)forEach:(void (NS_NOESCAPE ^)(ObjectType obj))block;
- (NSArray *)map:(id (NS_NOESCAPE ^)(ObjectType obj))block;
- (NSArray *)flatMap:(NSArray *(NS_NOESCAPE ^)(ObjectType obj))block;
- (NSArray <ObjectType> *)filter:(BOOL (NS_NOESCAPE ^)(ObjectType obj))block;
@end

View File

@@ -33,3 +33,70 @@ - (void)let:(void (^)(id it))block {
block(self);
}
@end
@implementation NSArray (Doric)
- (void)forEachIndexed:(void (NS_NOESCAPE ^)(id obj, NSUInteger idx))block {
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
block(obj, idx);
}];
}
- (NSArray *)mapIndexed:(id (NS_NOESCAPE ^)(id obj, NSUInteger idx))block {
NSMutableArray *temp = [NSMutableArray new];
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[temp addObject:block(obj, idx)];
}];
return [temp copy];
}
- (NSArray *)flatMapIndexed:(NSArray *(NS_NOESCAPE ^)(id obj, NSUInteger idx))block {
NSMutableArray *temp = [NSMutableArray new];
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[temp addObjectsFromArray:block(obj, idx)];
}];
return [temp copy];
}
- (NSArray *)filterIndexed:(BOOL (NS_NOESCAPE ^)(id obj, NSUInteger idx))block {
NSMutableArray *temp = [NSMutableArray new];
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (block(obj, idx)) {
[temp addObject:obj];
}
}];
return [temp copy];
}
- (void)forEach:(void (NS_NOESCAPE ^)(id obj))block {
for (id obj in self) {
block(obj);
}
}
- (NSArray *)map:(id (NS_NOESCAPE ^)(id obj))block {
NSMutableArray *temp = [NSMutableArray new];
for (id obj in self) {
[temp addObject:block(obj)];
}
return [temp copy];
}
- (NSArray *)flatMap:(NSArray *(NS_NOESCAPE ^)(id obj))block {
NSMutableArray *temp = [NSMutableArray new];
for (id obj in self) {
[temp addObjectsFromArray:block(obj)];
}
return [temp copy];
}
- (NSArray *)filter:(BOOL (NS_NOESCAPE ^)(id obj))block {
NSMutableArray *temp = [NSMutableArray new];
for (id obj in self) {
if (block(obj)) {
[temp addObject:obj];
}
}
return [temp copy];
}
@end