Swift语言精要 - 扩展(Extension)

swift的Extension用户在不访问代码的情况下扩展基本结构类型或自定义类

extension Int {
    var doubled : Int {
        return self * 2
    }
    func multiplyWith(anotherNumber: Int) -> Int {
        return self * anotherNumber
    }
}

测试代码如下:

2.doubled // = 4
4.multiplyWith(32) // = 128

 

扩展甚至还可以使类型实现某个协议

下面这个例子在其它语言看来有些怪异,但在swift来说却是稀疏平常

protocol Blinking {
    var isBlinking : Bool { get }
    var blinkSpeed: Double { get set }
    func startBlinking(blinkSpeed: Double) -> Void
}

extension Int : Blinking {
    var isBlinking : Bool {
        return false;
    }
    var blinkSpeed : Double {
        get {
            return 0.0;
        }
        set {
            // Do nothing
        }
    }
    func startBlinking(blinkSpeed : Double) {
        println("I am the integer \(self). I do not blink.")
    }
}

测试代码如下:

2.isBlinking // = false
2.startBlinking(2.0) // prints "I am the integer 2. I do not blink."

 

posted @ 2016-04-01 19:29  Master HaKu  阅读(587)  评论(0)    收藏  举报