是否有一些类似于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。