美文网首页Swift
Swift:函数式、响应式与面向协议编程

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

作者: 码小菜 | 来源:发表于2023-06-09 23:11 被阅读0次

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

一,函数式编程

1,Array的操作
2,Optional的操作
3,函数式的概念
  • 主要特征:函数与其他数据类型一样,可以赋值给其他变量,也可以作为函数参数、函数返回值
  • 常用概念:Higher-Order Function(高阶函数)、Function Currying(函数柯里化)、Functor(函子)、Applicative Functor(适用函子)、Monad(单子)

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

4,高阶函数
  • 函数作为参数或返回值(mapfilterreduce等)
5,函数柯里化
  • 将一个接收多个参数的函数转换为只接收单个参数的函数
6,函子
  • 支持map运算的类型被称为函子(ArrayOptional等)
7,适用函子
  • 任意一个函子F,如果能支持以下运算,那么它就是一个适用函子(ArrayOptional等)
func pure<A>(_ value: A) -> F<A>
func <*><A, B>(fn: F<(A) -> B>, value: F<A>) -> F<B>
8,单子
  • 任意一个类型 F,如果能支持以下运算,那么它就是一个单子(ArrayOptional等)
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,响应式的概念
  • 响应式是一种编程范式,可以简化异步编程,提供更优雅的数据绑定
  • 一般与函数式一起使用,叫做函数响应式编程(Functional Reactive Programming,简称FRP
  • 下面两个是比较著名的响应式框架

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发送的事件

  • Event数据

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

3,创建和订阅Observable
4,创建Observer
5,扩展Binder属性
6,状态监听
  • 传统方式:KVOTarget-ActionNotificationDelegateBlock
7,既是Observable又是Observer
8,Disposable
  • Observable被订阅时,会返回一个Disposable实例,调用Disposabledispose方法可以取消订阅
  • 不需要再接收事件时,建议取消订阅,释放资源
  • 取消订阅有下面三种方式

三,面向协议编程

1,OOP和POP
  • OOP(Object Oriented Programming):面向对象编程
  • POP(Protocol Oriented Programming):面向协议编程
  • OOP的三大特性:封装、继承、多态
  • POP能弥补OOP设计上的不足
  • Swift中,OOPPOP是相辅相成的,任何一方都不能取代另一方
2,使用场景
  • OOP经典使用的场景

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

  • OOP无法解决的场景,用POP可以解决

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

3,POP注意点
  • 优先考虑值类型(structenum),而不是引用类型(class
  • 优先考虑协议而不是继承,但也不要为了面向协议而使用协议
  • 巧用协议的扩展功能
4,实现前缀效果
  • 公共代码,适用于所有类型
  • String类型添加方法
  • Person类型添加方法
5,实现类型判断

相关文章

  • swift和OC的比较

    swift ----OC比较 编程范式 Swift 可以面向协议编程、函数式编程、面向对象编程。Objective...

  • Swift从入门到精通-1

    一、Swift和Objective-C比较 1、编程范式:Swift可以面向协议编程,函数式编程,面向对象编程;O...

  • swift注意事项

    一、编程范式 Swift 可以面向协议编程(POP)、函数式编程、面向对象编程。 Object-C 以面向对象编程...

  • Swift和OC的主要区别

    编程范式 Swift 可以面向协议编程、函数式编程、面向对象编程。 Object-C 以面向对象编程为主,当然你可...

  • 函数响应式编程概述

    什么是编程? 面向过程 vs 面向对象 命令式编程 vs 函数式编程 函数响应式编程 满足函数式的一些特性 面向离...

  • iOS知识点-9.Swift 是面向对象还是函数式的编程语言?

    Swift Basics Swift 是面向对象还是函数式的编程语言? Swift既是面向对象的,又是函数式的编程...

  • Swift特性

    Swift是面向对象还是函数式的编程语言 Swift 既是面向对象的,又是函数式的编程语言。说 Swift 是面向...

  • SwiftUI No.1

    swift是一种混合了面向对象变成,函数式编程,协议式编程的语言 1. Struct swift中的struct叫...

  • Swift学习笔记1-oc与swift的区别

    编程范式Swift可以面向协议编程、函数式编程、面向对象编程OC以面向对象编程为主,当然你可以引入类似Reacti...

  • Swift和OC的区别

    一.编程范式 1.Swift可以面向协议编程,函数式编程,面向对象编程; 2.OC以面向对象编程为主,当然也可以引...

网友评论

    本文标题:Swift:函数式、响应式与面向协议编程

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