发布于 2015-06-14 01:54:37 | 160 次阅读 | 评论: 0 | 来源: 网络整理

方法(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
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务