目次
SwiftのKeyPath
SwiftのKeyPathは、型のプロパティへのアクセスを表現するための型安全な方法です。これには、KeyPath, WritableKeyPath, ReferenceWritableKeyPathの3種類があります。それぞれについて、サンプルコードを用いて説明します。
KeyPath型
KeyPath型は、読み取り専用のプロパティへのアクセスを表します。KeyPathは値型(構造体や列挙型)のプロパティにも参照型(クラス)のプロパティにも使用できます。
struct Person {
let name: String
let age: Int
}
let name = person[keyPath: \Person.name] // "Alice"
print(name)WritableKeyPath型
WritableKeyPath型は、値型のプロパティへの読み取りおよび書き込みアクセスを表します。この場合、Personは構造体であり、値型です。
struct Person {
var name: String
var age: Int
}
var person = Person(name: "Alice", age: 30)
// 読み取り
let age = person[keyPath: \Person.age] // 30
print(age)
// 書き込み
person[keyPath: ageKeyPath] = 31
print(person.age) // 31ReferenceWritableKeyPath型
ReferenceWritableKeyPath型は、参照型(クラス)のプロパティへの読み取りおよび書き込みアクセスを表します。この場合、Personはクラスであり、参照型です。
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
let person = Person(name: "Alice", age: 30)
// 読み取り
let name = person[keyPath: \Person.name] // "Alice"
print(name)
// 書き込み
person[keyPath: \Person.name] = "Bob"
print(person.name) // "Bob"まとめ
- KeyPathは読み取り専用のプロパティへのアクセスを表します。
- WritableKeyPathは値型のプロパティへの読み取りおよび書き込みアクセスを表します。
- ReferenceWritableKeyPathは参照型のプロパティへの読み取りおよび書き込みアクセスを表します。
これらの型を使うことで、プロパティへのアクセスを型安全に操作することができ、コードの再利用性や可読性が向上します。
年収4桁万円を達成中のiOSエンジニアが皆さんをお導きいたします!
ぜひメンターを受けてみてください〜
メンターはこちら

コメント