美文网首页Swift
Swift 4.1 - SE-0188 Make Standar

Swift 4.1 - SE-0188 Make Standar

作者: ienos | 来源:发表于2020-12-09 14:10 被阅读0次

    索引类型支持 Hashable


    Key-Path 下标需要支持 Hashable,为了提升实用性,将标准库中的所有索引类型添加 Hashable conformance

    Key-Path Usage

    struct Person {
      var age: Int
      var name: String
    }
    let jerry = Person.init(age: 12, name: "jerry")
    
    let name = \Person.name
    
    print(jerry[keyPath: name])
    /// Jerry
    

    标准库中的索引类型

    Simple Index Types 简单索引类型

    • Int (already (已经Hashable)
    • Dictionary.Index
    • Set.Index
    • String.Index

    Wrapping Index Types 包装索引类型

    • ClosedRangeIndex
    • FlattenCollectionIndex
    • LazyDropWhileIndex
    • LazyFilterIndex
    • LazyPrefixWhileIndex
    • ReversedIndex

    遵循 Hashable 之后的 Int 和 String.Index 在 Key Path 中的使用

    let numbers = [10, 20, 30, 40, 50]
    let firstValue = \[Int].[0]
    print(numbers[keyPath: firstValue]) // 10
    
    let string = "Hellooo!"
    let firstCharacter = \String.[string.startIndex]
    

    相关文章

      网友评论

        本文标题:Swift 4.1 - SE-0188 Make Standar

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