在扩展中添加协议成员
即便无法修改源代码,依然可以通过扩展(Extension)
来扩充已存在类型(译者注: 类,结构体,枚举等)。扩展
可以为已存在的类型添加属性
,方法
,下标
,协议
等成员。详情请在扩展章节中查看。
注意: 通过扩展
为已存在的类型遵循
协议时,该类型的所有实例也会随之添加协议中的方法。
TextRepresentable
协议含有一个asText
,如下所示:
protocol TextRepresentable {
func asText() -> String
}
通过扩展
为上一节中提到的Dice
类遵循TextRepresentable
协议
extension Dice: TextRepresentable {
cun asText() -> String {
return "A \(sides)-sided dice"
}
}
从现在起,Dice
类型的实例可被当作TextRepresentable
类型:
let d12 = Dice(sides: 12,generator: LinearCongruentialGenerator())
println(d12.asText())
// 输出 "A 12-sided dice"
SnakesAndLadders
类也可以通过扩展
的方式来遵循协议:
extension SnakeAndLadders: TextRepresentable {
func asText() -> String {
return "A game of Snakes and Ladders with \(finalSquare) squares"
}
}
println(game.asText())
// 输出 "A game of Snakes and Ladders with 25 squares"
易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
- Java技术群: 227270512 (人数:2000,免费:否)
- Go开发者群(新): 851549018 (人数:1000,免费)
- PHP开发者群: 460153241 (人数:2000,免费)
- MySQL/SQL群: 418407075 (人数:2000,免费:否)
- 大数据开发群: 655154550 (人数:2000,免费:否)
- Python技术群: 287904175 (人数:2000,免费:否)
- 人工智能深度学习: 456236082 (人数:2000,免费:否)
- 测试工程师群: 415553199 (人数:2000,免费:否)
- 前端开发者群: 410430016 (人数:2000,免费:否)
- C/C++技术群(新): 629264796 (人数:2000,免费)
- Node.js技术群(新): 621549808 (人数:2000,免费)
- PostgreSQL数据库群: 539504187 (人数:1000,免费)
- Linux运维技术群: 479429477 (人数:2000,免费:否)
- Oracle数据库: 175248146 (人数:2000,免费:否)
- C#/ASP.Net开发者: 579821706 (人数:2000,免费)
- 数据分析师群: 397883996 (人数:2000,免费:否)