iOS Swift 扩展(Extensions)

作者: 夏天然后 | 来源:发表于2016-04-25 17:00 被阅读275次
一 可以为类添加新功能
  1. UIViewController
extension UIViewController {
    // 为 UIViewController 添加的新功能写到这里
}
  1. 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 }
}
  1. 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: UIViewController 中
// viewDidLoad

self.printfChars()
let oneInch = 25.4.mm
print("One inch is \\(oneInch) meters") // One inch is 0.0254 meters
  let dou = 23.4.sq
  print("\\(dou)") // 547.56
let numbers = [1,2,4,5,6,3,0,-54,-65]
self.printIntegerKinds(numbers) // + + + + + + 0 - - 
var intNumb = 5
intNumb.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("")
    }
---------------------------------------

走心文章, 值得点赞 ---文/夏天然后
微博-点我@夏天是个大人了 || QQQ: 498143780

相关文章

  • iOS Swift 扩展(Extensions)

    一 可以为类添加新功能 UIViewController Double ViewController 二 可变实例...

  • swift - 扩展(Extensions)

    向一个已有的类,结构体或枚举类型添加新功能,包括在没有获取源代码的情况下扩展类型的能力 1:扩展可以向已有的类型添...

  • 【Swift 3.1】21 - 扩展 (Extensions)

    【Swift 3.1】21 - 扩展 (Extensions) 自从苹果2014年发布Swift,到现在已经两年多...

  • iOS 扩展(Extensions)

    Extension非常像是没有命名的类别。 使用Extension需要注意的点: Extension中的方法如果没...

  • 使用Playground快速练习Swift语法--扩展与协议

    扩展(Extensions) Swift中的扩展功能可以动态给类增加功能,类似于Javascript中的proto...

  • 20、【Swift】扩展 - Extensions

    适用:结构体、枚举、枚举、协议 使用场景增加计算属性(实例和类)【不能扩充存储属性】方法(实例或)构造器下标嵌套类...

  • Swift语法2.21(扩展)

    本文参考了Swift2.2与3.0的语法,在少数地方添加了自我理解与示例. 扩展(Extensions) 扩展就是...

  • 18-Swift扩展(Extensions)

    扩展就是向一个已有的类、结构体、枚举类型或协议类型添加新功能。而且还包括在没有权限获取原始源代码的情况下扩展类型的...

  • 18-Swift扩展(Extensions)

    扩展就是向一个已有的类、结构体、枚举类型或协议类型添加新功能。而且还包括在没有权限获取原始源代码的情况下扩展类型的...

  • Swift - 16.扩展(Extensions)

    本章包含内容: 扩展语法 计算型属性 构造器 方法 下标 嵌套类型 扩展就是向一个已有的类、结构体、枚举类型或者协...

网友评论

    本文标题:iOS Swift 扩展(Extensions)

    本文链接:https://www.haomeiwen.com/subject/clcqrttx.html