有没有办法在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 })
但是,这比我想要的更冗长,更乏味,更容易出错。是否有我缺少的内置功能?
答案 0 :(得分:0)
对于答案本身,到目前为止(1.1),任何语言构造都不会替代您正在做的事情(将存储的属性的访问过程包装到可引用的对象中)。
对于答案的意见部分,看起来你的代码只适用于公共变量,因为它们违反了基本的封装规则,这是正确的吗?
答案 1 :(得分:0)
您应该尝试Sourcery。我遇到了同样的问题,并且碰到了这个工具,如果您进行快速搜索,您应该可以轻松地找到Sourcery的一些已经制作好的模板,这些模板可以让您为数据类型生成镜头。