Есть ли способ автоматически генерировать пару функций getter/setter для свойства в классе в Swift? Что-то вдоль линий объектива в Хаскелле.Объективы в свойствах 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 })
Однако это становится многословным, утомительным и более подвержены ошибкам, чем хотелось бы. Есть ли встроенная функция, которую мне не хватает?
Какую цель? Насколько я понимаю, линзы в Haskell предназначены для использования изменяемого состояния, которое уже включает Swift. Между обработчиками 'willSet' и' didSet' и вычисленными свойствами существует большая гибкость. –
Моя цель - передать этот объектив другому объекту для управления свойствами. В моем текущем проекте это объект, который генерирует ячейки таблицы и отвечает на нажатия стандартным способом. Объективы в Haskell не связаны с изменчивым состоянием, поскольку они предназначены для предоставления сложного способа запроса и управления структурами данных, хотя из них возникает иллюзия изменчивости. –
Путь ObjC будет просто проходить цепочку ключей, но у вас нет безопасности типов. –