繁体   English   中英

Swift keyPath与协议

[英]Swift keyPath vs protocol

我了解keyPaths的基本概念,但不了解其用例。 如果您已经知道实例的类型,则可以轻松访问其属性。 如果您不这样做,那么协议已经支持只读,读写属性。 有人可以向我解释我所缺少的吗? 除了keyPath或keypath比协议更好时,我们无法使用协议做任何事情?

如果您已经知道实例的类型,则可以轻松访问其属性。 如果您不这样做,那么协议已经支持只读,读写属性。 有人可以向我解释我所缺少的吗?

您所缺少的是一种未知的感觉。

在这两个句子中,您都说知道实例的属性是什么。 这不是关键路径解决的问题。 关键路径与知道类型无关。 它们不反对类型或协议。 相反,在使用键路径之前,您必须确切地知道实例的属性是什么。

关键路径是什么时,未知是访问哪个属性。 它们提供了一种传递属性引用的方法,以便可以告知其他人访问属性。

例如,这是一个Person类型:

struct Person {
    let firstName : String
    let lastName : String
}

这里是通过排序一者的阵列的功能firstName lastName ,在不知道进行排序,其中一个条件:

func sortArrayOfPersons(_ arr:[Person], by prop: KeyPath<Person, String>) -> [Person] {
    return arr.sorted { $0[keyPath:prop] < $1[keyPath:prop] }
}

关键路径是如何告诉此函数将哪个属性用作排序的基础。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM