1. 扩展的用途

Swift 中的扩展功能可以动态地给类增加功能

现有的类, 结构或枚举类型的方法, 可以在扩展的帮助下进行添加

类型的功能可以使用扩展加入, 但重写的功能不能使用扩展

扩展可以完成以下的任务 :

    • 添加计算型属性和计算静态属性
    • 定义实例方法和类型方法
    • 提供新的构造器
    • 定义下标
    • 定义和使用新的嵌套类型
    • 使一个已有的类型符合某个接口

2. 扩展类型的属性

extension Int {

    var double : Int {

        return self * 2

    }

    var triple : Int {

        return self * 3

    }

    var fourfold : Int {

        return self * 4

    }

    var half : Double {

        return Double(self) / 2.0

    }

}

var x = 10

print(x.half)    //结果 : 5

print(x.double)    //结果 : 20

3. 拓展类型的方法

struct sXYPoint {

    var x = 0.0

    var y = 0.0

}

extension sXYPoint {

    func distance(point : sXYPoint) -> Double {

        let disX = point.x - self.x

        let disY = point.y - self.y

        return sqrt(disX * disX + disY * disY)

    }

}

let startPoint = sXYPoint(x : 0, y : 0)

let endPoint = sXYPoint(x : 1, y : 1)

print(startPoint.distance(point : endPoint))    //结果 : 1.4142135623731