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))
参考上面的代码片段,假设我需要在实例方法中仅使用常量conversionRate
。
将conversionRate
声明为 (1)let
vs (2)static let
的优缺点是什么?
哪种风格更易读且更优化?
此外,假设我只需要一个短暂存在的CurrencyConverter
实例,并且conversionRate
本身庞大(一个包含10K个 Double 的数组)。 那么,(1)let conversionRate
是否更加内存优化?
static
。 - Sweeperstatic let
时,你在表明这个值是全局的,并且对于类的所有实例都是相同的,但是当你只使用let
时,你在表明这个值对于一个实例来说是常量。现在在你的情况下,由于你用硬编码的值实例化了属性,所以没有实际区别,但至少static
告诉你一些关于属性目的的信息。 - Joakim Danielson