Swift学习笔记-扩展

扩展能给已有的类型(即使没有源代码)添加功能,包括计算属性,协议,初始化方法,新方法,嵌入类型,注意,扩展不允许添加存储属性

类型别名

使用typealias关键字可以给类型提供一个别名,例如下面代码中的XYString,它和String用法一样

import Foundation

typealias XYString = String
var str1:XYString="abcdefg"
print(str1.uppercased())//ABCDEFG

扩展计算属性

使用extension关键字用于扩展一个类型,下面的Double类型被添加了一个计算属性perimeter

extension Double{
    var perimeter:Double{
        return self * 3.14
    }
}
var d:Double=2.0
print(d.perimeter)

扩展使类型符合协议

import Foundation


protocol Person {
    var height:Int{get}
    var color:String{get}
}

extension Double:Person{
    var height:Int{
        return 170
    }
    var color:String{
        return "black"
    }
}

扩展初始化方法

扩展初始化方法时可以调用原有类型的初始化方法

import Foundation

extension Double{
    init (height:Double,weight:Double){
        self.init(exactly: height*2+weight*2)!
    }
}

var height:Double=5.0
var weight:Double=4.0
let result:Double=Double.init(height: height, weight: weight)
print(result)//18.0

扩展中添加嵌套类型

import Foundation

extension Double{
    enum Kind{
        case big
        case middle
        case small
    }
    var kind:Kind{
        if self < 5.0{
            return Kind.small;
        }else if self < 10.0{
            return Kind.middle
        }else{
            return Kind.big
        }
    }
}

var height:Double=5.0
print(height.kind)

扩展方法

import Foundation

extension Double{
    func getPI() -> Double{
        return 3.14
    }
}

var height:Double=5.0
print(height.getPI())

你可能感兴趣的:(Swift学习笔记-扩展)