Swift 4.1 - SE-0188 Make Standar
2020-12-09 本文已影响0人
ienos
索引类型支持 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]