Swift如何优雅的的设置只读(readOnly)属性

OC中常用到的属性修饰词readOnly,在swift中显然已经不存在了,有人说变成了计算属性,如下:

class ReadOnly {
    var name: String {
        get {
            return ""
        }
    }
}

然而,会出现如下的情况:

139B4A42-1124-4C6E-BCB2-562566D76E51.png

很显然这并不是我们要的结果,我们要的是内部可设置,外部只读的属性,况且计算属性,在每次使用时都会重新计算,对于计算逻辑比较复杂的属性来说,多次调用性能肯定有影响

接下当然是优雅的方式实现我们想要的只读属性

class ReadOnly {
    private(set) var name: String
    
    init(_ name: String) {
        self.name = name
    }
}

let obj = ReadOnly.init("hah")
//以下代码会报错
obj.name = "hahh"

注意点:可设置fileprivate(set)为当前文件可调用set,private(set)class内有效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,035评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,144评论 19 139
  • 7.22(周六),——第一天乘车去丰宁坝上草原,从家六点出发,到达目的地十一点。一下车就是浓浓的马粪味,当然气温也...
    年华已过阅读 2,900评论 1 5
  • 关于未来 这两天公司新人报道,熙熙攘攘,热闹非凡。看着一张张稚气的脸,充满着希冀与期望,多么单纯可爱的孩子啊!转眼...
    栀子飞翔阅读 1,819评论 0 0
  • 说穿了,学习,就是一种持之以恒的习惯。从出生时本能的吃喝拉撒睡,到闭上眼睛的那一刻,学习,将陪伴我们终身。学习各种...
    碎碎妖阅读 4,404评论 8 13

友情链接更多精彩内容