目次
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) // 31
ReferenceWritableKeyPath型
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エンジニアが皆さんをお導きいたします!
ぜひメンターを受けてみてください〜
メンターはこちら
コメント