24 kwietnia 2020 Apple wydało kolejną wersję Xcode’a (tj. 11.4), w której pojawiła się najnowsza wersja Swift 5.2. Po raz kolejny wydanie Xcode’a skupia się na poprawie komfortu programowania. Dzięki nowej i ulepszonej diagnostyce usuwanie błędów będzie szybsze, a  uzupełnianie kodu działa lepiej. 

SE-0249

Wprowadzona została możliwość użycia wyrażenia ścieżki klucza (Key Path Expression) jako funkcji. Jest to bardzo przydatne w sytuacjach, gdy używamy domknięcia, aby wyodrębnić fragment danych z właściwości. Zmiana ta wprowadza możliwość użycia wyrażenia ścieżki \Root.value wszędzie tam, gdzie dozwolone są funkcje (Root) -> Value.

Ulepszenie obrazuje poniższy przykład:

struct User {
    let firstName: String
    let lastName: String
    let position: String?
    let isAdmin: Bool
}

let nowak = User(firstName: "Jan", lastName: "Nowak", position: "CEO", isAdmin: true)
let kowalski = User(firstName: "Adam", lastName: "Kowalski", position: nil, isAdmin: false)
let jaworska = User(firstName: "Monika", lastName:"Jaworska", position: "Tester", isAdmin: false)

let users = [nowak, kowalski, jaworska] 
// dotychczas 

let beforeNames = users.map { $0.firstName }
let beforePositions = user.compactMap { $0.position }
let beforeFilter = users.filter { $0.isAdmin }

// Swift 5.2+

let newNames = users.map(\.firstName)
let newPositions = users.compactMap(\.position)
let newFilter = users.filter(\.isAdmin) 
[ "Jan", "Adam". "Monika" ]
[ "Jan", "Monika" ]
[ "Jan" ] 

Więcej informacji możecie znaleźć tutaj SE-0249 Key Path Expression as Function