私有setter公有getter屬性

d_d發表於2018-10-29

需求

對一個類的屬性只希望本類可以設定修改,其他類只讀。比如一個Person類有一個name屬性,只能在類內部賦值,其他類只讀。

實現

可使用private(set)對屬性進行修飾,則getter為預設級別,setterprivate級別。

class Person {
    private(set) var name: String?
}

let person = Person()
person.name = "dow" //報錯 Cannot assign to property: 'name' setter is inaccessible
let personName = person.name
複製程式碼

也可以設定屬性為私有setter公有getter:

class Person {
    public private(set) var name: String?
}
複製程式碼

從而實現不同需求對屬性的操作。

相關文章