带下划线的变量声明

时间:2017-07-14 16:12:56

标签: swift variables declaration

我在Youtube的一些视频中看过这个。

class Student {

    private var _name: String!
    private var _studentID: Int!

    var name: String {
        return _name
    }

    var studentID:Int {
        return _studentID
    }

    init(name: String, studentID: Int) {
        self._name = name
        self._studentID = studentID
    }
}

他们这样做的原因(添加_name_studentID)而不是:

class Student {

    private var name: String!
    private var studentID: Int!

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

非常感谢。

1 个答案:

答案 0 :(得分:6)

第一个示例实质上是创建公开可读但可私密写入的属性。

第二组代码与第一组代码的作用不同。

编写此代码的正确方法是:

private (set) var name: String // no need for the !
private (set) var studentID: Int // no need for the !

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

这使得外部用户可以读取属性,但只能由类设置。这是第一组代码实现的,但是更加冗长和不必要的方式。

使用下划线只是在创建私有实例变量时从Objective-C继承的命名约定。

就个人而言,我会避免使用第一组代码的视频和教程。