位置:首页 > 高级语言 > 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