Swift のクラスのプロパティの getter/setter 関数ペアを自動的に生成する方法はありますか? Haskell のレンズのようなものです。
私は次のことを手動で行うことができました:
class PropertyLens<U, T> {
let getter: U -> T
let setter: (U, T) -> ()
init(getter: (U -> T), setter: ((U, T) -> ())) {
self.getter = getter
self.setter = setter
}
func get(u: U) -> T {
return getter(u)
}
func set(u: U, t: T) {
setter(u, t)
}
}
// ...
let myPropertyLens = PropertyLens<MyClass, Int>(getter: { $0.myProperty }, setter: { $0.myProperty = $1 })
しかし、それは私が望むよりも冗長で退屈で、エラーが発生しやすくなります。不足している組み込み機能はありますか?