gpt4 book ai didi

Swift keyPath 与协议(protocol)

转载 作者:可可西里 更新时间:2023-11-01 00:27:12 27 4
gpt4 key购买 nike

我了解 keyPaths 的基本概念,但不了解其用例。如果您已经知道实例的类型,则可以轻松访问它们的属性。如果你不这样做,协议(protocol)已经支持只读、读写属性。有人可以向我解释我所缺少的吗?除了 keyPaths 或当 keypaths 比协议(protocol)更好时,我们不能用协议(protocol)做什么?

最佳答案

If you already know the type of the instance, you can access their properties easily. If you don’t, protocol already supports read-only, read-write properties. Can someone explain me what I am missing?

您缺少的是对未知事物的感觉。

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

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

例如,这是一个 Person 类型:

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

这里是一个函数,它按 firstName lastName 对 Persons 数组进行排序,不知道哪个排序依据:

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

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

关于Swift keyPath 与协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55904763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com