【发布时间】:2020-02-06 07:27:52
【问题描述】:
class CurrencyConverter {
// 1
private let conversionRate = 1.3
// 2
private static let conversionRate = 1.3
func convertToForeign(fromlocal local: Double) -> Double {
return local * CurrencyConverter.conversionRate
}
}
let c = CurrencyConverter()
print(c.convertToForeign(fromlocal: 5))
参考上面的代码sn-p,假设我只需要在实例方法中使用常量conversionRate。
将conversionRate 声明为仅 (1)let 与 (2)static let 的优缺点是什么?
哪种样式更具可读性和优化?
另外,假设我只需要 1 个 CurrencyConverter 的短暂实例,而 conversionRate 本身很庞大(10K 双精度数组)。 (1)let conversionRate 会更优化内存吗?
【问题讨论】:
-
我个人不会使用
static,因为我不用一直写类名。 -
当你使用
static let你是说这个值是全局的并且对于你的类的所有实例都是相同的但是当你使用let只有你说这个值是恒定的一个实例。现在在您的情况下没有实际区别,因为您使用硬编码值实例化属性,但至少static告诉您有关属性用途的一些信息。
标签: swift static compile-time-constant