美文网首页
swift 分类

swift 分类

作者: 皆为序幕_ | 来源:发表于2019-05-13 17:40 被阅读0次

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

扩展语法

  • 使用关键字extension来声明
extension SomeType {
    // 为 SomeType 添加的新功能写到这里
}

1.为已有类型添加新的计算型属性,但是不可以添加存储型属性

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.为已有类型添加新的便利构造器,不能为类添加新的指定构造器或析构器

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.为已有类型添加新的实例方法和类型方法

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())

相关文章

  • 关于 Swift Error 的分类

    关于 Swift Error 的分类

  • iOS机型判断-Swift

    最近项目转换Swift语言,好多用的分类都要重写,最近写了个判断iPhone机型的UIDevice分类Swift一...

  • UIButton倒计时

    oc 用法 NSObject分类 swift 用法

  • swift 分类

    分类就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能 扩展语法 使用关键字extension来声明 1....

  • swift 分类

    UIView: 添加View的x,y,width,height,centerX,centerY,maxY,maxX...

  • UIImageView 圆角

    OC 版本:创建UIImageView 分类: 使用: Swift版本: 调用:

  • Swift 5.0 新特性

    声明 此篇文章大部分类容翻译自 Hacking with Swift 的 What’s new in Swift ...

  • 如何在swift中实现oc分类

    在oc中为了增强已有类的功能,我们经常使用分类,但是在swift中没有分类这种写法了,相对应的是swift中只有扩...

  • Swift代码库之分页UI部分基础代码

    Swift代码库之分页UI部分基础代码 实现分类 新建浏览全部swift,VisitAllVC 尝试完成table...

  • Swift5.1 - 指针Pointer

    指针分类 使用swift提供指针类型: UnsafePointer UnsafeMutablePointer Un...

网友评论

      本文标题:swift 分类

      本文链接:https://www.haomeiwen.com/subject/diilfqtx.html