RXSwift + 函数式编程思想 初见

一.函数式编程思想

1.作为参数:
函数式编程的第一个特点就是可以把函数作为参数传递给另一个函数,也就是所谓的高阶函数
1.作为返回值:
函数式编程的第二个特点就是可以返回一个函数,这样就可以实现闭包或者惰性计算

从代码的可维护性上讲,函数式编程最大的好处是引用透明,即函数运行的结果只依赖于输入的参数,而不依赖于外部状态,因此,我们常常说函数式编程没有副作用。
没有副作用有个巨大的好处,就是函数内部无状态,即输入确定,输出就是确定的,容易测试和维护。

二.响应式编程思想

顾名思义 , 一呼百应
产生一个事件,会有很多事件响应, 这个事件会想流一样传播出去,万物皆是流
响应式编程是一种通过异步和数据流来构建事务关系的编程模型

三.RXSwift

介绍

在Swift环境下,作为函数式响应编程的代表,RAC的孪生兄弟RxSwift同样提供了相同的框架使用,并且基于Swift语言的优点,RxSwift甚至能够更简洁地开发业务代码。ReactiveX 官方给Rx的定义是,Rx是一个使用可观察数据流进行异步编程的编程接口,他结合了观察者模式、迭代器模式和函数式编程的精华。ReactiveX 不仅仅是一个编程接口,它是一种编程思想的突破,它影响了许多其它的程序库和框架以及编程语言。它拓展了观察者模式,使你能够自由组合多个异步事件,而不需要去关心线程,同步,线程安全,并发数据以及I/O阻塞。

优点

复合-Rx 就是和复合的代名词

复用-复用性比较强-代码量降低

清晰-因为声明都是不可更变,代码函数式编程可读性强

易用-理解容易,还抽象的了异步编程,统一代码风格

稳定-因为RxSwift是完全通过单元测试的

效果

简化了代码,减少了方法命名, 省去了胶水代码

 func setupButton() {
//rx
        self.button.rx.tap
            .subscribe(onNext: { () in
                print("点了,天王盖地虎rx")
            })
            .disposed(by: disposeBag)
//常规
       self.button addTarget(self, action: didClickButton(), for: .touchUpOutside)
    }
//多余的
 @objc func didClickButton(){
        print("点了,天王盖地虎")
    }

RXSwift 相关用法

image.png

未完待续....

你可能感兴趣的:(RXSwift + 函数式编程思想 初见)