当前位置: 首页 > news >正文

现在网站建设的技术学生作业网站

现在网站建设的技术,学生作业网站,网页升级紧急通知app,平顶山做网站推广Combine 系列 Swift Combine 从入门到精通一 1. Combine核心概念 你只需要了解几个核心概念#xff0c;就能使用好 Combine#xff0c;但理解它们非常重要。 这些概念中的每一个都通过通用协议反映在框架中#xff0c;以将概念转化为预期的功能。 这些核心概念是#x…Combine 系列 Swift Combine 从入门到精通一 1. Combine核心概念 你只需要了解几个核心概念就能使用好 Combine但理解它们非常重要。 这些概念中的每一个都通过通用协议反映在框架中以将概念转化为预期的功能。 这些核心概念是 Publisher and SubscriberOperator 操作符Subjects 2. Publisher and Subscriber 两个关键概念 publisher 和 subscriber在 Swift 中被描述为协议。 当你谈论编程尤其是 Swift 和 Combine时很多都使用类型描述。 当你说一个函数或方法返回一个值时该值通常被描述为“此类型之一”。 Combine 就是定义随着时间的推移使用许多可能的值进行操作的过程。 Combine 还不仅仅是定义结果它还定义了我们如何处理失败。 它不仅讨论可以返回的类型还讨论可能发生的失败。 2.1 Publisher 发布者 现在我们要引入的第一个核心概念是发布者。 当其被订阅之后根据请求会提供数据 没有任何订阅请求的发布者不会提供任何数据。 当你描述一个 Combine 的发布者时应该用两种相关的类型来描述它一种用于输出一种用于失败。 这些通常使用泛型语法编写该语法在描述类型的文本周围使用 和 符号。 这表示我们正在谈论这种类型的值的通用实例。 例如如果发布者返回了一个 String 类型的实例并且可能以 URLError 实例的形式返回失败那么发布者可能会用 String, URLError 来描述。 2.2 订阅者 Subscriber 与发布者匹配的对应概念是订阅者是第二个要介绍的核心概念。 订阅者负责请求数据并接受发布者提供的数据和可能的失败。 订阅者同样被描述为两种关联类型一种用于输入一种用于失败。 订阅者发起数据请求并控制它接收的数据量。 它可以被认为是在 Combine 中起“驱动作用”的因为如果没有订阅者其他组件将保持闲置状态没有数据会流动起来。 发布者和订阅者是相互连接的它们构成了 Combine 的核心。 当你将订阅者连接到发布者时两种类型都必须匹配发布者的输出和订阅者的输入以及它们的失败类型。 将其可视化的一种方法是对两种类型进行一系列并行操作其中两种类型都需要匹配才能将组件插入在一起。 2.3 操作符 Operator 第三个核心概念是操作符——一个既像订阅者又像发布者的对象。 操作符是同时实现了 订阅者协议 和 发布者协议 的类。 它们支持订阅发布者并将结果发送给任何订阅者。 你可以用这些创建成链用于处理和转换发布者提供的数据和订阅者请求的数据。 我称这些组合序列为管道。 操作符可用于转换值或类型 - 输出和失败类型都可以。 操作符还可以拆分或复制流或将流合并在一起。 操作符必须始终按输出/失败这样的类型组合对齐。 编译器将强制执行匹配类型因此类型错误将导致编译器错误如果幸运的话会有一个有用的 fixit 片段建议给你解决方案。 用 swift 编写的简单的 Combine 管道如下所示 let _ Just(5) .map { value - String in // do something with the incoming value here// and return a stringreturn a string}.sink { receivedValue in // sink is the subscriber and terminates the pipelineprint(The end result was \(receivedValue))}管道从发布者 Just 开始它用它定义的值在本例中为整数 5进行响应。输出类型为 Integer失败类型为 Never。然后管道有一个 map 操作符它在转换值及其类型。 在此示例中它忽略了发布者发出的输入并返回了一个字符串。 这也将输出类型转换为 String并将失败类型仍然保持为 Never。然后管道以 sink 订阅者结束。 当你去尝试理解管道时你可以将其视为由输出和失败类型链接的一系列操作。 当你开始构建自己的管道时这种模式就会派上用场。 创建管道时你可以选择操作符来帮助你转换数据、类型或两者同时使用以实现最终目的。 最终目标可能是启用或禁用用户界面的某个元素或者可能是得到某些数据用来显示。 许多 Combine 的操作符专门设计用来做这些转换。 有许多操作符是以 try 为前缀的这表示它们返回一个 Error 的失败类型。 例如 map 和 tryMap。 map 操作符可以转换输出和失败类型的任意组合。 tryMap 接受任何输入和失败类型并允许输出任何类型但始终会输出 Error 的失败类型。 像 map 这样的操作符你在定义返回的输出类型时允许你基于提供给操作符的闭包中返回的内容推断输出类型。 在上面的例子中map 操作符返回一个 String 的输出类型因为这正是闭包返回的类型。 为了更具体地说明更改类型的示例我们扩展了值在传输过程中的转换逻辑。此示例仍然以提供类型 Int, Never 的发布者开始并以类型为 String, Never 的订阅结束。 SwiftUI-NotesTests/CombinePatternTests.swift let _ Just(5) .map { value - String in switch value {case _ where value 1:return nonecase _ where value 1:return onecase _ where value 2:return couplecase _ where value 3:return fewcase _ where value 8:return manydefault:return some}}.sink { receivedValue in print(The end result was \(receivedValue))}Just 是创建一个 Int, Never 类型组合的发布者提供单个值然后完成。提供给 .map() 函数的闭包接受一个 Int 并将其转换为一个 String。由于 Never 的失败类型没有被改变所以就直接输出了。sink 作为订阅者接受 String, Never 类型的组合数据。 当你在 Xcode 中创建管道类型不匹配时Xcode 中的错误消息可能包含一个有用的修复建议 fixit。 在某些情况下例如上个例子当提供给 map 的闭包中不指定特定的返回类型时编译器就无法推断其返回值类型。 Xcode (11 beta 2 and beta 3) 显示此为错误消息 Unable to infer complex closure return type; add explicit type to disambiguate。 在上面示例中我们用 value → String in 明确指定了返回的类型。 你可以将 Combine 的发布者、操作符和订阅者视为具有两种需要对齐的平行类型 —— 一种用于成功的有用值另一种用于错误处理。 设计管道时经常会选择如何转换其中一种或两种类型以及与之相关的数据。 参考 https://heckj.github.io/swiftui-notes/index_zh-CN.html 代码 https://github.com/heckj/swiftui-notes
http://www.hkea.cn/news/14470825/

相关文章:

  • 网站建设销售培训国家企业信用网企业查询
  • 台式机做网站服务器做网站需要做h5吗
  • 网站建设的时候如何上传图片企业网站的制作与维护
  • 长兴网站建设列举企业网站建设有哪些好处招标网下载
  • 茶酒行业网站建设网站开发遇到的难题解决
  • 长兴县网站建设传奇高端网站设计制作
  • 中等职业学校网站建设模块食品建设网站
  • 邢台做网站的公司网站建设与服务技能实训心得体会
  • 佛山的网站建设公司asp.net企业网站管理系统
  • 手机网站编辑网站建设 招标
  • 买服饰网站建设wordpress 制作主题
  • 梧州本地网站互联网舆情处置公司
  • 关于进一步加强网站建设实木餐桌椅网站建设公司
  • 网站建设论文答辩ppt智能音箱功能ui设计效果图
  • 手机端网站建设步骤糖果网站建设目的
  • 网站开发团队需要哪些ppt模板免费下载 素材医疗
  • 中文网站建设中模板下载网站什么时候做SEO优化最合适
  • 一对一视频网站建设免费推广选择推广途径与原因
  • 网站建设外包费用云网站7china
  • 东莞建网站哪家好巨野有做网站的公司吗
  • 行政单位网站信息建设政策git wordpress
  • 长春市网站建设中投中原建设有限公司官方网站
  • 潍坊企化网站建设网页升级紧急通知 2022狼
  • 在网站上显示备案信息我做彩票网站开发彩票网站搭建
  • 焦作网站建设兼职哪个基层司法所网站做的比较好
  • 卡盟网站怎么做免费ppt模板下载无水印
  • 本地做网站绑定域名国内比较知名的大型门户网站
  • 个人音乐网站源码搭建wordpress模板怎么安装教程视频
  • 网站的在线支付模块怎么做湛江制作网站企业
  • 漯河网站建设茂睿科技wordpress改了固定链接访问不