是否有一些类似于Haskell的散布函数的本机 objective-c 方法?

这是一个例子

Prelude> Data.List.intersperse ',' "abcdefg"
"a,b,c,d,e,f,g"

还是一些将对象连接到另一个对象上的函数?我知道我可以通过遍历集合来手动完成此操作,我只是想知道是否有一些功能内置的功能可以满足该用例

我有一些UIBarButtonItem对象,[barButtonItem1,barButtonItem2,barButtonItem3]
我要结束于:[barButtonItem1,flexButtonItem,barButtonItem2,flexButtonItem,barButtonItem3]

最佳答案

快速的Google会为您提供一个此类功能的NSArray+FunctionalKit.h,它可以实现所需的intersperse函数。鉴于此存在,我很想说没有内置函数可以执行此操作。您可以将其添加到您的项目中:

@interface NSArray (Intersperse)
- (NSArray *)intersperse:(id)object;
@end

@implementation NSArray (Intersperse)
- (NSArray *)intersperse:(id)object {
  NSMutableArray *interspersed = [NSMutableArray array];
  for (NSUInteger i = 0; i < [self count]; ++i) {
    [interspersed addObject:[self objectAtIndex:i]];
    if (i != [self count] - 1) [interspersed addObject:object];
  }
  return [NSArray arrayWithArray:interspersed];
}
@end

用法:
NSArray *buttons = @[barButtonItem1,barButtonItem2,barButtonItem3];
NSArray *allButtons = [buttons intersperse:flexButtonItem];

整个GitHub项目是available

10-08 08:27