2017-10-19 70 views

回答

-1

您需要稱爲高階函數flatmap

- (NSArray *)flatMap:(id (^)(id obj))block { 
    NSMutableArray *mutableArray = [NSMutableArray new]; 
    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
     id _obj = block(obj); 
     if ([_obj isKindOfClass:[NSArray class]]) { 
      NSArray *_array = [_obj flatMap:block]; 
      [mutableArray addObjectsFromArray:_array]; 
      return; 
     } 
     [mutableArray addObject:_obj]; 
    }]; 
    return mutableArray; 
} 
+0

這是如何回答這個問題的?也許你應該展示如何使用你的'flatMap'方法來回答這個問題。你應該澄清這個方法是'NSArray'類別的一部分。 – rmaddy

+0

平面圖是一種功能性編程的東西,這是一個普遍的想法。由於Objective-C沒有這個,你應該自己實現這個。但它在Swift,JavaScript,C#等現代語言中非常普遍。 –

+0

參考這個網址:https://medium.com/@weijentu/higher-order-functions-in-objective-c-850f6c90de30 –