函数式编程思想的侵袭–ReactiveCocoa的流和序列的备忘

作者: shaneZhang 分类: ios技术 发布时间: 2017-01-06 15:05

我们上一篇文章中用另外一个框架介绍了FRP里面的一些高阶函数。下面我们用RAC的框架来一起学习一下,FRP里面的高阶函数.

  • 高阶映射Map

    NSArray *array = @[ @1, @2, @3 ];
    RACSequence *stream = [array rac_sequence];
    [stream map:^id (id value){
        return @(pow([value integerValue], 2));
    }];
    NSLog(@"%@",[stream array]);
    
    NSLog(@"%@",[[[array rac_sequence] map:^id (id value){
        return @(pow([value integerValue], 2));
    }] array]);
  • 高阶过滤filter

    NSLog(@"%@", [[[array rac_sequence] filter:^BOOL (id value){
        return [value integerValue] % 2 == 0;
    }] array]);
  • 高阶折叠fold

    NSLog(@"%@",[[[array rac_sequence] map:^id (id value){
        return [value stringValue];
    }] foldLeftWithStart:@"最后输出的字符串是:" reduce:^id (id accumulator, id value){
        return [accumulator stringByAppendingString:value];
    }]);

ReactiveCocoa具有左折叠和右折叠的概念。左折叠时折叠算法将从头到尾遍历数组,反之称为右折叠。这样的命名(即左、右折叠)暗示了编程语言对列表的理解,这种概念在Objective-C中是没有的。

如果觉得我的文章对您有用,请随意打赏。如果有其他问题请联系博主QQ(909491009)或者下方留言!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注