ios - Objective-C 相当于 Haskell 的 intersperse 函数?或在另一个对象上加入对象?

标签 ios objective-c cocoa

是否有一些类似于 Haskell 的 intersperse 函数的原生 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 .

关于ios - Objective-C 相当于 Haskell 的 intersperse 函数?或在另一个对象上加入对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28547610/

相关文章:

ios - 在 iOS 中集成 FCM 以进行推送通知时,是否使用了 Device Token?

iphone - 将NSString转换为以特定字符分隔的NSDictionary

objective-c - 使用核心动画层动画 View

cocoa - NSMutableDictionary setObject :forKey - custom class

cocoa - 使用用户信息条目记录核心数据实体属性

objective-c - 在删除某个对象之前,我应该检查它是否存在于集合中吗?

ios - Xamarin 工作室。单点触控。无法在 bundle 中加载 NIB ... 名称

iphone - 如何从 UIViewController 访问 UINavigationController

iphone - 为什么我的观察员未注册?

iphone - UIImagePickerController - 设置最大视频持续时间