在 Swift 中,你应该对属性使用内置的 get/set 还是制作 getter/setter 方法?



在 Swift 中创建类时,最好对计算属性使用内置的 get/set 关键字(参见计算属性 https://docs.swift.org/swift-book/LanguageGuide/Properties.html(还是使用 getter/setter 方法?

我认为使用 getter/setter 方法而不是 get/set 关键字在获取/设置某些内容可能会引发错误时会有所帮助(我不相信你能做get throws { }——我刚刚尝试过,Xcode 期望"{"开始 getter 定义(:

func getData() throws -> [[HKSample]] {
if self.hasData() {
return self.data
} else {
throw BaseError.noData
}
}

为什么你不应该专门制作 getter 和/或 setter 类方法?为什么你不应该只使用 get/set 关键字,除非你需要抛出一个错误(我敢肯定方法的用例比抛出一个错误更多(? 我不明白使用 get/set 关键字的意义,尤其是在将封装原则应用于您的代码时。这是两者差异的另一个例子,我们试图计算矩形棱镜的体积 - 是这样的:

var volume: Double {
return width * height * depth
}

比这更有利(或者只是一种风格的选择?

func getVolume() -> Double {
return self.width * self.height * self.depth
}

计算属性通常具有具有恒定时间复杂度的含义。例如,Array.firstArray.last是计算属性,而Array.min()Array.max()是函数。

正如你所注意到的,计算属性不能throw,所以有时迫使你动手,让你不得不选择函数,即使计算属性本来更合适。

最新更新