位置:首頁 > 高級語言 > Swift教學 > Swift方法擴展

Swift方法擴展

方法(Methods)

擴展可以向已有類型添加新的實例方法和類型方法。下麵的例子向Int類型添加一個名為repetitions的新實例方法:

extension Int {
    func repetitions(task: () -> ()) {
        for i in 0..self {
            task()
        }
    }
}

這個repetitions方法使用了一個() -> ()類型的單參數(single argument),表明函數冇有參數而且冇有返回值。

定義該擴展之後,你就可以對任意整數調用repetitions方法,實現的功能則是多次執行某任務:

3.repetitions({
    println("Hello!")
    })
// Hello!
// Hello!
// Hello!

可以使用 trailing 閉包使調用更加簡潔:

3.repetitions{
    println("Goodbye!")
}
// Goodbye!
// Goodbye!
// Goodbye!

修改實例方法(Mutating Instance Methods)

通過擴展添加的實例方法也可以修改該實例本身。結構體和枚舉類型中修改self或其屬性的方法必須將該實例方法標注為mutating,正如來自原始實現的修改方法一樣。

下麵的例子向Swift的Int類型添加了一個新的名為square的修改方法,來實現一個原始值的平方計算:

extension Int {
    mutating func square() {
        self = self * self
    }
}
var someInt = 3
someInt.square()
// someInt 現在值是 9