前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >swift 分类

swift 分类

作者头像
xy_ss
发布2023-11-22 09:15:29
1790
发布2023-11-22 09:15:29
举报
文章被收录于专栏:浮躁的喧嚣

分类就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能

扩展语法

  • 使用关键字extension来声明
代码语言:javascript
复制
extension SomeType {
    // 为 SomeType 添加的新功能写到这里
}
1.为已有类型添加新的计算型属性,但是不可以添加存储型属性
代码语言:javascript
复制
extension Double {
    var km: Double { return self * 1_000.0 }
    var m : Double { return self }
    var cm: Double { return self / 100.0 }
    var mm: Double { return self / 1_000.0 }
    var ft: Double { return self / 3.28084 }
}

let oneInch = 25.4.mm
print("One inch is \(oneInch) meters") //One inch is 0.0254 meters
2.为已有类型添加新的便利构造器,不能为类添加新的指定构造器或析构器
代码语言:javascript
复制
class ClassA{
    var a = 0
    var b = 0
    init(a:Int,b:Int) {
        print("a = \(a),b = \(b)")
    }
}

let a = ClassA.init(a: 2, b: 2)

extension ClassA{
    convenience init(a:Int,b:Int,c:Int) {
        self.init(a:a,b:b)
        print("a = \(a),b = \(b),c = \(c)")
    }
}
let aa = ClassA.init(a: 1, b: 2, c: 3)

//a = 2,b = 2
//a = 1,b = 2
//a = 1,b = 2,c = 3
3.为已有类型添加新的实例方法和类型方法
代码语言:javascript
复制
class ClassA{
    var a = 0
    var b = 0
    init(a:Int,b:Int) {
        self.a = a
        self.b = b
    }
}
extension ClassA{
    func sum() -> Int {
        return a + b
    }
}
let a = ClassA.init(a: 2, b: 3)
print(a.sum())
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分类就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能
  • 扩展语法
    • 1.为已有类型添加新的计算型属性,但是不可以添加存储型属性
      • 2.为已有类型添加新的便利构造器,不能为类添加新的指定构造器或析构器
        • 3.为已有类型添加新的实例方法和类型方法
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档