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