8
Swift에서 클래스의 속성에 대한 getter/setter 함수 쌍을 자동으로 생성하는 방법이 있습니까? 하스켈에있는 렌즈 라인을 따라 뭔가.렌즈를 Swift 속성
내가 수동으로 다음을 수행 할 수있었습니다 :
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 })
그러나, 즉, 자세한 지루한, 그리고 더 많은되고 오류가 발생하기 쉬운 내가 좋아하는 것보다. 누락 된 내장 기능이 있습니까?
목표는 무엇입니까? 내가 아는 한 하스켈의 렌즈는 스위프트가 이미 포함하고있는 변경 가능한 상태를 허용하도록 설계되었습니다. 'willSet'과'didSet' 핸들러와 계산 속성 사이에는 많은 유연성이 있습니다. –
내 목표는이 렌즈를 다른 객체에 전달하여 속성을 조작 할 수있게하는 것입니다. 현재 프로젝트에서는 표보기 셀을 생성하고 프레스에 표준 방식으로 응답하는 객체입니다. 하스켈의 렌즈는 데이터 구조를 질의하고 조작 할 수있는 구성 가능한 방법을 제공하는 것만큼이나 가변성에 대한 환상은 아니지만 가변성에 대한 환상이 그들로부터 나온다. –
ObjC 방법은 문자열 keypath를 전달하지만 형식 안전은 없습니다 –