为什么我们使用关键字" get"在Swift变量声明中?

时间:2016-05-15 07:32:35

标签: swift variables getter

这可能听起来很愚蠢,但我无法弄清楚为什么程序员在Swift中声明变量如下:

class Person: NSObject {
    var name: String { get }
}

为什么关键字" get"用过的?为什么"设置"错过了什么? Aren他们应该如下使用:

class Person: NSObject {
    var name: String {
        get {
          // getter
        }
        set {
          // setter
        }
    }
}

我想这是一个垃圾邮件问题,但我对 {get}

的理论定义感兴趣

2 个答案:

答案 0 :(得分:3)

var name: String { get }之类的句子通常用于非类中的协议。在协议中,它意味着实现必须具有String类型的变量,该变量至少应该是只读的(因此get)。如果大括号位为{ get set },则该变量将被读写。

实际上根据Earl Gray的回答,var name: String { get }不会在课堂内编译。

答案 1 :(得分:2)

严格来说,第一个代码示例没有意义。你没有在类中声明这样的变量..(你可以在这样的协议中这样做。)

第二个是计算属性的示例,但缺少getter和setter实现。 (它似乎暗示至少所以我不会反对代码示例的有效性。)