美文网首页
RAC学习记录(1)

RAC学习记录(1)

作者: 没有故事的宋同学 | 来源:发表于2019-08-25 20:25 被阅读0次

RAC学习记录

先了RAC中的几个术语解释,链式、函数式、响应式

  1. 链式,用block作为函数的返回参数,并且block的返回值是对象本身
    比如像如下调用 add(10).(5)
    比较典型的框架 masonry
    在此,我用链式的方法写了一个计算器

.h文件

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Calculation : NSObject

/**
 加
 */
- (Calculation *(^)(int))add;
/**
 减
 */
- (Calculation *(^)(int))sub;
/**
 乘
 */
- (Calculation *(^)(int))muilt;
/**
 除
 */
- (Calculation *(^)(int))divide;

@end

NS_ASSUME_NONNULL_END



@interface NSObject (Calculation)
+ (int)makeCalculation:(void(^)(Calculation *))calculation;
@end


.m文件

#import "Calculation.h"


@interface Calculation()
/** 结果 */
@property(nonatomic, assign) int result;

@end

@implementation Calculation

- (Calculation *(^)(int))add{
    
    return ^Calculation *(int value){
            _result += value;
        return self;
    };
}

- (Calculation * _Nonnull (^)(int))sub
{
    return ^Calculation *(int value){
        _result -= value;
        return self;
    };
}

- (Calculation * _Nonnull (^)(int))muilt
{
    return ^Calculation *(int value){
        _result *= value;
        return self;
    };
}

- (Calculation * _Nonnull (^)(int))divide
{
    return ^Calculation *(int value){
        _result /= value;
        return self;
    };
}

@end


@implementation NSObject (Calculation)

+ (int)makeCalculation:(void (^)(Calculation *))calculation{
    Calculation *cal = [[Calculation alloc] init];
    if (calculation) {
        calculation(cal);
    }
    return cal.result;
}

@end

使用如下

    int result = [NSObject makeCalculation:^(Calculation *make) {
            make.add(10).add(20).sub(20).muilt(10);
    }];
    NSLog(@"-----:%d",result);
  1. 函数式 啥意思?
    每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
    搞个demo体验下

demo

相关文章

  • RAC学习记录(1)

    RAC学习记录 先了RAC中的几个术语解释,链式、函数式、响应式 链式,用block作为函数的返回参数,并且blo...

  • RAC学习记录

    入门http://www.jianshu.com/p/15f9da230f82[https://www.jians...

  • 学习RAC记录

    FRP的核心是信号,信号在ReactiveCocoa(以下简称RAC)中是通过RACSignal来表示的,信号是数...

  • ReactiveCocoa的导入方法

    开始学习RAC之路记录1: 在终端进入项目路径包含 test,text.xcodeproj,testTests,t...

  • RAC学习1

    什么是RAC 简单说,它是一个第三方库,可以简化写代码的过程 官方说,他是一个有GitHub开源的应用于iOS和O...

  • 解耦-用RAC处理网络请求

    最近接手的项目中使用了RAC,也研究学习了下,发现使用RAC确实清晰便利了许多,下面记录一下用RAC处理网络请求实...

  • RAC学习记录(2)

    简单的使用下RAC 代替KVO 系统的写法 RAC的kvo写法相比于系统代码高聚合低耦合了,也不用移除监听者 2....

  • RAC

    ReactiveCocoa入门 学习RAC小记-适合给新手看的RAC用法总结RAC稍深入-适合新手学习RAC iO...

  • 了解这些,学习RAC不再难

    了解这些,学习RAC不再难 了解这些,学习RAC不再难

  • ReactiveCocoa & MVVM学习笔记

    网上关于RAC和MVVM的资料非常多,我写这篇主要是因为初学RAC,为自己记个学习笔记。 1. RAC是什么? (...

网友评论

      本文标题:RAC学习记录(1)

      本文链接:https://www.haomeiwen.com/subject/ljpkectx.html