《Swift开发实战》——第2章,第2.7节协议和扩展
2023-09-11 14:17:42 时间
本节书摘来自异步社区《Swift开发实战》一书中的第2章,第2.7节协议和扩展,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.7 协议和扩展
在Swift语言中,使用关键字protocol来声明一个协议。例如,如下所示的演示代码。
protocol ExampleProtocol { var simpleDescription: String { get } mutating func adjust() }
在Swift语言中,类、枚举和结构体都可以实现协议。例如,如下所示的演示代码。
class SimpleClass: ExampleProtocol { var simpleDescription: String = "A very simple class." var anotherProperty: Int = 69105 func adjust() { simpleDescription += " Now 100% adjusted." var a = SimpleClass() a.adjust() let aDescription = a.simpleDescription struct SimpleStructure: ExampleProtocol { var simpleDescription: String = "A simple structure" mutating func adjust() { simpleDescription += " (adjusted)" var b = SimpleStructure() b.adjust() let bDescription = b.simpleDescription
在上述演示代码中声明SimpleStructure时,关键字mutating用来标记一个会修改结构体的方法。因为类SimpleClass中的方法经常会修改类,所以,在声明SimpleClass时不需要标记任何方法。
可以使用extension来为现有的类型添加功能,比如新的方法和参数。可以使用扩展来改造定义在别处,甚至是从外部库或者框架引入的一个类型,使得这个类型遵循某个协议。例如,如下所示的演示代码。
extension Int: ExampleProtocol { var simpleDescription: String { return "The number \(self)" mutating func adjust() { self += 42 }
为现有的类、结构体、枚举类型、协议添加了新功能。扩展和 Objective-C 中的分类类似。 扩展可以: 添加计算属性; 定义方法; 提供新的构造函数; 使现有的类型遵循某协议
《Swift iOS应用开发实战》——导读 随着Swift语言的到来,这种简单、好用又安全的编程语言将吸引更多的开发者加入,让苹果软件生态圈更加繁荣。如此,“果粉”将可以在App Store和Mac Store中下载到更多称心如意的App。从某种意义上说,Swift语言是苹果的一项新的商业战略。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- VS扩展CodeMaid代码整理插件
- php如何开启gd2扩展
- 【安富莱二代示波器教程】第17章 附件B---功能扩展和改进方向
- 通过ABAP business switch动态扩展一个ABAP domain
- WCF HTTP 错误 404.3 - Not Found(由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。)
- 如何在Cloud for Customer overview UI上扩展新的按钮
- [精通Objective-C]类,接口,协议与扩展
- 阿里云Redis LUA脚本功能上线——轻量嵌入,极速扩展,业务轻松跨平台
- 2.2 模乘逆元-扩展欧几里得法
- Packetbeat协议扩展开发教程(2)
- Packetbeat协议扩展开发教程(1)
- Packetbeat协议扩展开发教程(3)
- Centos7 安装PHP7版本及php-fpm,redis ,php-redis,hiredis,swoole 扩展安装
- PostgreSQL的学习心得和知识总结(九十五)|深入理解PostgreSQL数据库开源MPP扩展Citus 分布表数据插入 的实现原理
- ISIS高级特性——LSP分片扩展与过载
- Flask的闪现(message) 请求扩展 中间件 蓝图
- 扩展协议解析