struct User {
let name: String
let age: Int
var isAdult: Bool { age >= 18 }
}
// *** before: ***
let namesOld = users.map { $0.name }
let adultsOld = users.filter { $0.isAdult }
let agesOld = users.map { $0.age }
// *** in version 5.2: ***
let names = users.map(\.name)
let adults = users.filter(\.isAdult)
let ages = users.map(\.age)
// a key path fits anywhere a function of one argument is expected
let show: (User) -> String = \.name
print(users.map(show))
// where two arguments are needed, a closure stays
let sorted = users.sorted { $0.age < $1.age }