BLKFunctional 0.2.0

BLKFunctional 0.2.0

测试已测试
语言语言 Obj-CObjective C
授权 MIT
发布最后发布2014 年 12 月

Oliver Staats 维护。



  • olistaats

关于

BLKFunctional 是一个小的库,它允许在 Objective-C 中稍微使用一些函数式编程风格。

在 NSArray 和 NSString 上的分类使用库前缀 "blk_",以避免命名空间冲突。分类添加了最少的功能以避免命名空间污染。

示例

// Assuming the following array
NSArray *numberArray = @[@2, @9, @66];

// 1. Conjoin, can join arrays, sets, dictionaries and objects
NSArray *arr1  = [numberArray blk_conjoin:@6 and:@7 ];    // arr1 = @[@2, @9, @66, @6, @7]
NSArray *arr2  = [numberArray blk_conjoin:@[@6, @7] ];    // arr2 = @[@2, @9, @66, @6, @7]

NSString *str1 = [@"[2" blk_conjoin:@", 9" and:@", 66]"]; // str1 = @"[2, 9, 66]"
NSString *str2 = [@"["  blk_conjoin:numberArray interpose:@", " end:@"]" ];
                                                          // str2 = @"[2, 9, 66]"

// 2. Convenience expression macros
// Below, the type of argument "p1" is NSNumber, so ide code completion is available
NSArray *arr3 = [numberArray blk_map:BLKFnN(@([p1 doubleValue] + 2)) ];

// 3. Functions on NSArray
NSArray *arr4 = [numberArray blk_map:^(NSNumber *p1) {
    return @([p1 doubleValue] + 2);
}];

// 4. (OR) If you absolutely can't have a category
NSArray *arr5 = [BLKFunction mapArray:numberArray withBlock:^(NSNumber *p1) {
    return @([p1 doubleValue] + 2);
}];

// For category names and expression macros, #import BLKCatFunction.h
// (OR) To forgo categories, #import BLKFunction.h (and optionally, #import BLKMacro.h)

可用性

作为分类方法(带有前缀 "blk_")在 NSArray 中可用

  • take, drop, filter, map, reduce, fold, conjoin

作为分类方法(带有前缀 "blk_")在 NSString 中可用

  • conjoin

此外,通过 BLKFunction.h 提供(如果您正在使用分类,则已导入)

  • array: map, fold 的索引版本
  • dictionary: fold, 索引 fold
  • shuffle, reverse
  • 带有选项来以逆序和/或并行化的 fold

枚举 "停止" 短路(类似于 enumerateObjectsUsingBlock:)。通过返回常量 BLKStopProcessing 可用于 map, reduce, fold

  • map, reduce, fold

pod 'BLKFunctional'

示例

  • 存在一个包含示例项目 ExampleBLKFunctional。

状态

  • conjoin 仍然是实验性的