UIVIEwController
extension UIVIEwController { // 为 UIVIEwController 添加的新功能写到这里}
Double
extension Double { var km: Double { return self * 1_000.0 } var m : Double { return self } var cm: Double { return self / 100.0 } var mm: Double { return self / 1_000.0 } var ft: Double { return self / 3.28084 } var sq: Double { return self * self }}
VIEwController
// 自定义
extension VIEwController{ func printfChars() { print("I am char") }}二 可变实例方法(Mutating Instance Methods)
通过扩展添加的实例方法也可以修改该实例本身。结构体和枚举类型中修改 self 或其属性的方法必须将该实例方法标注为 mutating,正如来自原始实现的可变方法一样。
下面的例子为 Swift 的 Int 类型添加了一个名为 square 的可变方法,用于计算原始值的平方值:
改变Int 值本身
extension Int { mutating func square() { self = self * self }}三 嵌套类型(nested Types)
扩展可以为已有的类、结构体和枚举添加新的嵌套类型:
extension Int { enum Kind { case Negative,Zero,Positive } var kind: Kind { switch self { case 0: return .Zero case let x where x > 0: return .Positive default: return .Negative } }}
// 在VIEwController
// vIEwDIDLoad中
self.printfChars()let oneInch = 25.4.mmprint("One inch is \(oneInch) meters") // One inch is 0.0254 meters let dou = 23.4.sq print("\(dou)") // 547.56let numbers = [1,2,4,5,6,3,0,-54,-65]self.printIntegerKinds(numbers) // + + + + + + 0 - - var intNumb = 5intNumb.square()print("\(intNumb)") // 25
该例子为 Int
添加了嵌套枚举。这个名为Kind
的枚举表示特定整数的类型。具体来说,就是表示整数是正数、零或者负数。
这个例子还为 Int
添加了一个计算型实例属性,即 Kind
,用来根据整数返回适当的 Kind
枚举成员。
现在,这个嵌套枚举可以和任意 Int
值一起使用了:
func printIntegerKinds(numbers: [Int]) { for number in numbers { switch number.kind { case .Negative: print("- ",terminator: "") case .Zero: print("0 ",terminator: "") case .Positive: print("+ ",terminator: "") } } print("") }总结
以上是内存溢出为你收集整理的Swift 扩展(Extensions)(十四)全部内容,希望文章能够帮你解决Swift 扩展(Extensions)(十四)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)