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内有效。

你可能感兴趣的:(Swift如何优雅的的设置只读(readOnly)属性)