Key Path Expressions as Functions
👉 paiza.io
struct User {
let email: String
let isActive: Bool
}
let users = [
User(email: "joe@me.com", isActive: true),
User(email: "joy@me.com", isActive: false)
]
// ⭐️ key path as functions
// 1. \.email = { $0.email }
// 2. \.isActive = { $0.isActive }
// ╭──1──╮
let emails = users.map(\.email) // (User) -> String
// ["joe@me.com", "joy@me.com"]
// ╭───2────╮
let activeUsers = users.filter(\.isActive) // (User) -> Bool
// [User(email: "joe@me.com", isActive: true)]
// ⭐️ subscript <---> key path
// user[keyPath: \User.isActive] == user.isActive
// let userStates = users.map { user in user[keyPath: \User.isActive] } // == users.map { $0.isActive }
Last updated
Was this helpful?