Getter 计算 属性 与 returns 值的变量

Getter computed property vs. variable that returns a value

getter 计算的 属性 和 returns 值的变量之间有区别吗?例如。下面两个变量有区别吗?

var NUMBER_OF_ELEMENTS1: Int {
    return sampleArray.count
}

var NUMBER_OF_ELEMENTS2: Int {
    get {
        return sampleArray.count
    }
}

它们是相同的,因为它们都定义了一个只读计算 属性。但前者更可取,因为它比后者更短且更易读。

具有 getter 和 setter 的计算机 属性 具有以下形式:

var computedProperty: Int {
    get {
        return something // Implementation can be something more complicated than this
    }
    set {
        something = newValue // Implementation can be something more complicated than this
    }
}

在某些情况下不需要 setter,因此计算的 属性 声明为:

var computedProperty: Int {
    get {
        return something // Implementation can be something more complicated than this
    }
}

请注意,计算的 属性 必须始终有一个 getter - 因此不可能只用 setter 声明一个。

由于经常发生计算属性只有 getter,Swift 让我们通过省略 get 块来简化它们的实现,使代码更易于编写和更容易阅读:

var computedProperty: Int {
    return something // Implementation can be something more complicated than this
}

两个版本在语义上没有区别,所以无论你使用哪个,结果都是一样的。