美文网首页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