Swift

Swift:函数式、响应式与面向协议编程

2023-06-09  本文已影响0人  码小菜

目录
一,函数式编程
二,响应式编程
三,面向协议编程

一,函数式编程

1,Array的操作
2,Optional的操作
3,函数式的概念

实现:(num + 3) * 5 - 1

4,高阶函数
5,函数柯里化
6,函子
7,适用函子
func pure<A>(_ value: A) -> F<A>
func <*><A, B>(fn: F<(A) -> B>, value: F<A>) -> F<B>
8,单子
func pure<A>(_ value: A) -> F<A>
func flatMap<A, B>(_ value: F<A>, _ fn: (A) -> F<B>) -> F<B>
// 数组
@inlinable public func flatMap<SegmentOfResult>(_ transform: (Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element] where SegmentOfResult : Sequence
// 可选型
@inlinable public func flatMap<U>(_ transform: (Wrapped) throws -> U?) rethrows -> U?

二,响应式编程

1,响应式的概念

ReactiveCocoa
1>简称RAC,有OCSwift版本
2>官网:http://reactivecocoa.io
3>githubhttps://github.com/ReactiveCocoa

ReactiveX
1>简称Rx,有众多语言版本,比如RxJavaRxJSRxSwift
2>官网:http://reactivex.io
3>githubhttps://github.com/ReactiveX

2,RxSwift

RxSwiftRx标准APISwift实现,不包括任何iOS相关的内容
RxCocoa:基于RxSwift,给iOS控件扩展了很多Rx特性

Event:携带数据
Observable:负责发送事件
Observer:负责订阅Observable,监听Observable发送的事件

next:具体数据
error:表明Observable异常终止,不会再发出事件
completed:表明Observable正常终止,不会再发出事件

3,创建和订阅Observable
4,创建Observer
5,扩展Binder属性
6,状态监听
7,既是Observable又是Observer
8,Disposable

三,面向协议编程

1,OOP和POP
2,使用场景

当多个类具有公共方法时,可以将公共方法抽取到父类中

B2C1的公共方法抽取到A中显然是不合适的

3,POP注意点
4,实现前缀效果
5,实现类型判断
上一篇 下一篇

猜你喜欢

热点阅读