首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >私有变量

私有变量
EN

Stack Overflow用户
提问于 2020-02-28 03:56:42
回答 1查看 3.5K关注 0票数 2

在创建类时,创建自定义类的这两个实现在安全性方面有什么区别。它们的工作方式与我所使用的完全相同,但听说使用私有变量是创建类的正确方法。

代码语言:javascript
复制
class Person {

    var name:String
    var age:Int

    init(name: String, age: Int){
        self.name = name
        self.age = age
    }
}

代码语言:javascript
复制
class Person {

    private var _name: String
    private var _age: Int

    var name: String {
        set {
            self._name = newValue
        } get {
            return _name
        }
    }

    var age: Int {
        set {
            self._age = newValue
        } get {
            return _age
        }
    }

    init(name: String, age: Int){
        self._name = name
        self._age = age
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-28 06:24:54

private绝对是推荐使用的,但只在您想要为您的属性提供这种隐私的情况下使用。

您的第二个代码并不能保证任何类型的隐私。这只是不必要地增加了更多的代码。

可能存在这样一种情况:您希望将写入访问保持为对类型(class/struct)的私有访问,并允许在该类型之外进行读访问。为此,您可以在属性中使用private(set)访问修饰符,即

代码语言:javascript
复制
class Person {
    private(set) var name: String
    private(set) var age: Int

    init(name: String, age: Int){
        self.name = name
        self.age = age
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60445040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档