Tun*_*Duc 3 protocols swift swift-protocols keypaths
我了解keyPaths的基本概念,但不了解其用例。如果您已经知道实例的类型,则可以轻松访问其属性。如果您不这样做,那么协议已经支持只读,读写属性。有人可以向我解释我所缺少的吗?除了keyPath或keypath比协议更好时,我们无法使用协议做任何事情?
如果您已经知道实例的类型,则可以轻松访问其属性。如果您不这样做,那么协议已经支持只读,读写属性。有人可以向我解释我所缺少的吗?
您所缺少的是一种未知的感觉。
在这两个句子中,您都说知道实例的属性是什么。这不是关键路径解决的问题。关键路径与知道类型无关。它们不反对类型或协议。相反,在使用键路径之前,您必须确切地知道实例的属性是什么。
关键路径是什么时,未知就是其中属性来访问。它们提供了一种传递属性引用的方法,以便可以告知其他人访问该属性。
例如,这是一个Person类型:
struct Person {
let firstName : String
let lastName : String
}
Run Code Online (Sandbox Code Playgroud)
这里是通过进行排序的人的一个数组的函数或者所述firstName 或所述lastName,在不知道哪一个通过排序:
func sortArrayOfPersons(_ arr:[Person], by prop: KeyPath<Person, String>) -> [Person] {
return arr.sorted { $0[keyPath:prop] < $1[keyPath:prop] }
}
Run Code Online (Sandbox Code Playgroud)
关键路径是如何告诉此函数将哪个属性用作排序的基础。
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |