我理解keyPaths的基本概念,但我不明白它的应用场景。如果您已经知道实例的类型,可以轻松地访问它们的属性。如果您不知道,协议已经支持只读、读写属性。有人能解释一下我错过了什么吗?有任何协议无法做到但是keyPaths可以,或者keyPaths比协议更好的地方吗?
我理解keyPaths的基本概念,但我不明白它的应用场景。如果您已经知道实例的类型,可以轻松地访问它们的属性。如果您不知道,协议已经支持只读、读写属性。有人能解释一下我错过了什么吗?有任何协议无法做到但是keyPaths可以,或者keyPaths比协议更好的地方吗?
struct Person {
let firstName : String
let lastName : String
}
下面是一个函数,它可以按照名字或者姓氏对Persons
数组进行排序,而不需要指定按照哪个属性进行排序:
func sortArrayOfPersons(_ arr:[Person], by prop: KeyPath<Person, String>) -> [Person] {
return arr.sorted { $0[keyPath:prop] < $1[keyPath:prop] }
}