Getter计算属性与返回值的变量

Dan*_*iel 2 getter computed-values swift

getter计算属性和返回值的变量之间是否存在差异?例如,以下两个变量之间有区别吗?

var NUMBER_OF_ELEMENTS1: Int {
    return sampleArray.count
}

var NUMBER_OF_ELEMENTS2: Int {
    get {
        return sampleArray.count
    }
}
Run Code Online (Sandbox Code Playgroud)

Ant*_*nio 5

具有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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

var computedProperty: Int {
    get {
        return something // Implementation can be something more complicated than this
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,计算属性必须始终具有getter - 因此不可能仅使用setter声明一个.

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

var computedProperty: Int {
    return something // Implementation can be something more complicated than this
}
Run Code Online (Sandbox Code Playgroud)

从语义上讲,两个版本之间没有区别,所以无论你使用哪个,结果都是一样的.