小编典典

Swift中计算的只读属性vs函数

swift

在Swift WWDC简介会话中,展示了一个只读属性description

class Vehicle {
    var numberOfWheels = 0
    var description: String {
        return "\(numberOfWheels) wheels"
    }
}

let vehicle = Vehicle()
println(vehicle.description)

选择上述方法而不是使用方法有什么含义:

class Vehicle {
    var numberOfWheels = 0
    func description() -> String {
        return "\(numberOfWheels) wheels"
    }
}

let vehicle = Vehicle()
println(vehicle.description())

在我看来,您选择只读计算属性的最明显原因是:

  • 语义 -在此示例中description,将其作为类的属性而不是其执行的操作是有意义的。
  • 简短明了 -避免在获取值时使用空括号。

显然,上面的示例过于简单,但是否有其他充分的理由选择一个?例如,是否有一些功能或属性的功能可以指导您决定使用哪种功能?


注意:乍看之下,这似乎是一个非常普遍的OOP问题,但我很想知道任何特定于Swift的功能,这些功能将指导使用该语言的最佳实践。


阅读 281

收藏
2020-07-07

共1个答案

小编典典

在我看来,这主要是风格问题:我非常喜欢将 属性 用于:表示您可以获取和/或设置的简单值。当实际工作完成时,我使用 函数
(或方法)。也许必须从磁盘或数据库中计算或读取某些内容:在这种情况下,即使仅返回一个简单值,我也使用一个函数。这样一来,我可以轻松地看到呼叫是廉价的(属性)还是可能昂贵的(功能)。

当苹果发布一些Swift编码约定时,我们可能会变得更加清晰。

2020-07-07