加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

镜头进入Swift属性

发布时间:2020-12-14 05:28:44 所属栏目:百科 来源:网络整理
导读:有没有办法在 Swift中为类中的属性自动生成getter / setter函数对? Haskell镜头的一些东西. 我已经能够手动执行以下操作: class PropertyLensU,T { let getter: U - T let setter: (U,T) - () init(getter: (U - T),setter: ((U,T) - ())) { self.getter =
有没有办法在 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 })

然而,这比我想要的更冗长,乏味,更容易出错.是否有我缺少的内置功能?

对于答案本身,到目前为止(1.1),任何语言构造都不会替代您正在做的事情(将存储属性的访问过程包装到可引用的对象中).

对于答案的意见部分,看起来你的代码只适用于公共变量,这对于打破基本的封装规则是很讨厌的,这是正确的吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读