![見出し画像](https://assets.st-note.com/production/uploads/images/21634229/rectangle_large_type_2_04a0e5bf0b141c7391cd0b1eb2b2f9e2.png?width=1200)
Swift 5.2の新しいとこ。 - Key Path
同時にXcode 11.4も同時に更新されました。安定性をますアップデートのようです。
Swift 5.2の言語仕様も少し改良されているようなので確認したいと思います。
公式ページ、
のページより"playground"をダウンロードして実際に動かします。
まず、"Key Path Expressions as Functions"です。
struct User {
let name: String
let age: Int
let bestFriend: String?
var canVote: Bool {
age >= 18
}
}
構造体があり、これを使って配列を作ります。
let eric = User(name: "Eric Effiong", age: 18, bestFriend: "Otis Milburn")
let maeve = User(name: "Maeve Wiley", age: 19, bestFriend: nil)
let otis = User(name: "Otis Milburn", age: 17, bestFriend: "Eric Effiong")
let users = [eric, maeve, otis]
この配列の "users"で、eric、maeve、otisがまとめてあります。この"users"からそれぞれの"name"を取り出したいという時には、
以前であれば、
let oldUserNames = users.map { $0.name }
としていましたが、新しいSwift 5.2では、
let userNames = users.map(\.name)
と書けるようになりました。関数型の変数に Key Path 式を代入できるようにもなっているようです。
["Eric Effiong", "Maeve Wiley", "Otis Milburn"]
名前だけ抜き出します。その他
let voters = users.filter(\.canVote)
let bestFriends = users.compactMap(\.bestFriend)
という感じで配列から必要なものを取り出すことができます。
そもそも"KeyPath"って何か調べてみました。
KeyPathを使うことで動的にプロパティにアクセスできる
ということみたいです。
以下も参考サイト