Swift 扩展
2024-10-19 02:20:16
前言
扩展就是给一个现存类、结构体、枚举或者协议添加新的属性或者方法,无需修改目标的源代码,就可以把想要的代码加到目标上面。
- 扩展可以用来扩展现有类型的计算属性、构造器、方法和下标。
- 不能添加一个已经存在的方法或者属性。
- 添加的属性不能是存储属性,只能是计算属性。
在定义扩展时,在类型名前使用关键字
extension
。extension 某个现有类型 { // 增加新的功能
}
1、扩展计算属性
扩展计算属性
class Transport { var scope: String init(scope: String) {
self.scope = scope
}
}
extension Transport { // 扩展计算属性
var extProperty: String { get {
return scope
}
}
}
var myTrans = Transport(scope: "ludi")
print(myTrans.extProperty) // ludi
2、扩展构造器
扩展构造器
class Transport { var price = 30 var scope: String init(scope: String) {
self.scope = scope
}
}
extension Transport { // 扩展构造器
convenience init(price: Int, scope: String) { self.init(scope: scope)
self.price = price
}
}
var myTra1 = Transport(price: 50, scope: "ludi") // 使用扩展构造器,价格为 50
var myTra2 = Transport(scope: "haiyang") // 使用原构造器,介个属性的值仍为 30
3、扩展方法
使用扩展增加方法的做法非常灵活,除了可在自定义的类中扩展方法外,还可以扩展基本数据类型的方法,比如扩展整数类型。
// 扩展基本数据类型
extension Int { func calculate() -> Int {
return self * 2
}
}
var i = 3
i.calculate() // 6
4、扩展下标
扩展下标
extension Int { // 扩展下标
subscript(num: Int) -> Int {
return self * num
}
}
var i = 3
i[2] // 6
5、扩展协议
- 详细讲解见 “Swift 协议” 章节。
最新文章
- Facebook 帆布接入的总结
- 名词解释——Ext JS4
- 如何理解和熟练使用JS 中的call apply
- maven 常见错误解决
- 用php自带的filter函数验证、过滤数据 -转载
- C语言的一个关键字——static
- 何谓Dandy?它是一种着装风格
- BaseAdapter使listview设置不同背景图片并添加selector
- curl之post提交xml
- 一道看似简单的sql需求(转)
- ubuntu16.04 禁用Guest用户
- 前端面试题:css相关面试题
- bzoj 1835: [ZJOI2010]base 基站选址
- js 标签云
- Android数据库Sqlite-android学习之旅(九)
- IDEA环境下SSM整合------环境配置
- 向Spring容器中注册组件的方法汇总小结
- AJAX跨域问题以及解决思路(更新中)
- array_filter()函数
- 《Linux内核设计与实现》读书笔记六