Swift 扩展(Extensions)(十四)

Swift 扩展(Extensions)(十四),第1张

概述可以为类添加新功能 UIViewController extension UIViewController { // 为 UIViewController 添加的新功能写到这里} Double extension Double { var km: Double { return self * 1_000.0 } var m : Double { return self } 可以为类添加新功能

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)(十四)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存