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

付费 视频 网站 怎么做昆山网站建设哪家便宜

付费 视频 网站 怎么做,昆山网站建设哪家便宜,北京市建设工程信息网安徽兴创,做网站用哪个预装系统文章目录 协议协议继承扩展协议扩展面向协议的编程总结#xff1a; 今天你将学习一些真正的 Swifty 功能#xff1a;协议和面向协议的编程#xff08;POP#xff09;。 POP 摒弃了庞大而复杂的继承层次结构#xff0c;代之以更小、更简单、可以组合在一起的协议。这确实应… 文章目录 协议协议继承扩展协议扩展面向协议的编程总结 今天你将学习一些真正的 Swifty 功能协议和面向协议的编程POP。 POP 摒弃了庞大而复杂的继承层次结构代之以更小、更简单、可以组合在一起的协议。这确实应验了 Tony Hoare 多年前说过的一句话“每个大型程序中都有一个小程序试图脱颖而出。” 协议 协议是一种描述事物必须具有哪些属性和方法的方式。然后您可以告诉 Swift 哪些类型使用该协议 - 这一过程称为采用或遵守协议。 例如我们可以编写一个函数来接受具有属性的内容id但我们并不关心具体使用哪种类型的数据。我们首先创建一个Identifiable协议该协议要求所有符合要求的类型都有一个id可以读取“get”或写入“set”的字符串 protocol Identifiable {var id: String { get set } }我们无法创建该协议的实例 - 它是我们想要的描述而不是我们可以直接创建和使用的东西。但我们可以创建一个符合它的结构 struct User: Identifiable {var id: String }最后我们将编写一个displayID()接受任何Identifiable对象的函数 func displayID(thing: Identifiable) {print(My ID is \(thing.id)) }协议继承 一个协议可以从另一个协议继承这个过程称为协议继承。与类不同您可以同时从多个协议继承然后再在上面添加自己的自定义项。 我们将定义三个协议Payable要求符合类型的实现一个calculateWages()方法、NeedsTraining要求符合类型的实现一个study()方法、HasVacation要求符合类型的实现一个takeVacation()方法 protocol Payable {func calculateWages() - Int }protocol NeedsTraining {func study() }protocol HasVacation {func takeVacation(days: Int) }现在我们可以创建一个Employee协议将它们整合到一个协议中。我们不需要在顶部添加任何内容因此我们只需编写开括号和闭括号即可 protocol Employee: Payable, NeedsTraining, HasVacation { }现在我们可以让新类型遵守单一协议而不是遵守三个单独的协议。 扩展 扩展允许您向现有类型添加方法使它们执行最初设计时未考虑的操作。 例如我们可以向该Int类型添加一个扩展使其具有squared()返回当前数字乘以自身的方法 extension Int {func squared() - Int {return self * self} }要尝试一下只需创建一个整数您就会看到它现在有一个squared()方法 let number 8 number.squared()Swift 不允许在扩展中添加存储属性因此您必须使用计算属性。例如我们可以向isEven整数添加一个新的计算属性如果它包含偶数则返回 true extension Int {var isEven: Bool {return self % 2 0} }协议扩展 协议允许您描述某个对象应该具有哪些方法但不提供其中的代码。扩展允许您提供方法中的代码但仅影响一种数据类型 - 您无法同时将该方法添加到多种类型中。 协议扩展解决了这两个问题它们就像常规扩展不同之处在于您扩展的是特定类型就像Int扩展整个协议一样以便所有符合类型的类型都能获得您的更改。 例如这是一个包含一些名称的数组和集合 let pythons [Eric, Graham, John, Michael, Terry, Terry] let beatles Set([John, Paul, George, Ringo])Swift 的数组和集合都符合名为的协议Collection因此我们可以对该协议进行扩展以添加一个summarize()方法来整齐地打印集合 extension Collection {func summarize() {print(There are \(count) of us:)for name in self {print(name)}} }和Array现在Set都有该方法因此我们可以尝试一下 pythons.summarize() beatles.summarize()面向协议的编程 协议扩展可以为我们自己的协议方法提供默认实现。这使得类型更容易遵循协议并允许一种称为“面向协议的编程”的技术 - 围绕协议和协议扩展编写代码。 首先这里有一个名为的协议Identifiable它要求任何符合要求的类型都具有id属性和identify()方法 protocol Identifiable {var id: String { get set }func identify() }我们可以让每个符合要求的类型编写自己的identify()方法但是协议扩展允许我们提供一个默认值 extension Identifiable {func identify() {print(My ID is \(id).)} }现在当我们创建一个符合Identifiable它的类型时会identify()自动获得 struct User: Identifiable {var id: String }let twostraws User(id: twostraws) twostraws.identify()总结 让我们总结一下 协议描述了符合类型必须具有的方法和属性但不提供这些方法的实现。您可以在其他协议之上构建协议类似于类。扩展允许您向特定类型添加方法和计算属性例如Int。协议扩展允许您向协议添加方法和计算属性。面向协议的编程是将应用程序架构设计为一系列协议的实践然后使用协议扩展来提供默认方法实现。
http://www.dnsts.com.cn/news/245796.html

相关文章:

  • 网站管理助手 建设中百度爱采购推广一个月多少钱
  • jcms网站建设太原网站的公司
  • 南通网站设计公司咨询网站搭建
  • 潍坊建设银行网站南昌网站建设公司
  • 做seo要明白网站内容网站数据库空间增大
  • 企业门户网站建设jsp网站建设后如何修改
  • 公司电脑为什么有的网站打不开单页产品网站源码带后台
  • 海口建设厅网站企业做网站的公司
  • 建立一个自己的网站需要多少钱快速学制作网站
  • 网站 备案 初审wordpress 制作模板教程
  • 东莞市手机网站建设多少钱接做网站的项目
  • 网站颜色规范做网站 淘宝
  • 做网站案例平度市城乡建设局网站
  • 单页网站制作需要多少钱厦门汽车充电站建设报备网站
  • 室内设计优秀案例网站北京网页网站设计
  • 自助开通网站这是我做的网站
  • 网站推广的常用方法有哪些网站专题页功能
  • 南山的网站建设wordpress没有分类模板
  • 网站建设的一些销售技巧网站开发个人基本情况1000字
  • 适用于个人网站的域名温州seo排名
  • xampp网站后台做字典网站开发
  • 作者简介网页制作模板网络seo排名
  • 做网站的时候遇到的问题wordpress 全局设定
  • 花店网站推广方案外贸网站推广seo
  • 如何查看一个网站的域名解析网址如何下载视频
  • 用帝国做网站怎么样乌克兰网站后缀
  • 网站建设与设计摘要陕西正天建设有限公司网站
  • 网站建设系统优势wordpress网页制作
  • 建设企业网银u盾网站打不开推荐网站建设服务
  • 青海商城网站建设网站分为