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

Swift从0开始学习 协议和扩展 day5

协议:定义行为的契约

协议类似于其他语言中的接口。它们定义了一组方法、属性或其他需求,供结构体、类、枚举等类型去遵循和实现。协议并不实现这些需求,而是作为一种约定或合同,确保实现协议的类型会遵循特定的行为。

协议的定义和遵循

在 Swift 中,使用 protocol 关键字来定义协议。例如:

protocol ExampleProtocol {var simpleDescription: String { get }func exampleMethod()
}

在上述代码中,ExampleProtocol 定义了一个协议,要求遵循者实现一个只读属性 simpleDescription 和一个方法 exampleMethod()。遵循协议非常简单,只需使用 structclass 或 enum 实现该协议:

struct ExampleStruct: ExampleProtocol {var simpleDescription: String = "This is an example."func exampleMethod() {print("Example method executed.")}
}
协议中的属性和方法要求

协议可以要求属性是只读或读写,还可以要求特定的方法实现:

protocol FullyNamed {var fullName: String { get } // 只读属性var age: Int { get set } // 读写属性
}protocol Greetable {func greet(name: String) -> String
}

实现这些协议时,遵循者需要满足这些要求:

struct Person: 
http://www.lryc.cn/news/489274.html

相关文章:

  • javaScript交互案例
  • 【自动驾驶】数据集合集!
  • el-table表头前几列固定,后面几列根据接口返回的值不同展示不同
  • 【Redis】redis缓存击穿,缓存雪崩,缓存穿透
  • HBase Flink操作
  • C# .Net Core通过StreamLoad向Doris写入CSV数据
  • React-自定义Hook与逻辑共享
  • 蓝桥杯每日真题 - 第17天
  • 游戏开发实现简易实用的ui框架
  • vue3的attr透传属性详解和使用法方式。以及在css样式的伪元素中实现
  • 【仿真建模-MESA】框架简介
  • Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
  • VSCode 间距太小
  • 【K8S系列】imagePullSecrets配置正确,但docker pull仍然失败,进一步排查详细步骤
  • 【ARM Coresight OpenOCD 系列 5.1 -- OpenOCD 无法识别CPUID 问题: xxx is unrecognized】
  • 如何实现点击目录跳转到指定位置?【vue】
  • SQL 通配符
  • ubuntu显示管理器_显示导航栏
  • 黑芝麻嵌入式面试题及参考答案
  • 使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
  • 系统性能优化方法论详解:从理解系统到验证迭代
  • 使用Tengine 对负载均衡进行状态检查(day028)
  • 网站推广实战案例:杭州翔胜科技有限公司如何为中小企业打开市场大门
  • 视频修复技术和实时在线处理
  • 文心一言 VS 讯飞星火 VS chatgpt (396)-- 算法导论25.2 1题
  • 如何使用本地大模型做数据分析
  • 【Nginx从入门到精通】04-安装部署-使用XShell给虚拟机配置静态ip
  • C# 面向对象的接口
  • 使用IDEA+Maven实现MapReduced的WordCount
  • go语言示例代码