swift3中的模糊引用
问题描述:
迁移到swift3后喜欢。我有这个问题吗?你们的人知道什么是错的吗?swift3中的模糊引用
暧昧参考成员 “/”
let rateForPeriod = interestRate!/Double(100)/Double(K.monthsEachYear)
答
如果我是你,我会用可选结合检查的InterestRate是否零与否。
let interestRate: Double? = 0.4
if let interestRate = interestRate {
let rateForPeriod = interestRate/Double(100)/Double(1)
}
答
恭喜! 您可能刚在编译器中发现了一个错误!
试试你的代码的一些变化:
这种失败:
let optional: Double? = 1
let result = optional!/Double(1)/Double(1)
这工作:
let optional: Double? = 1
let unwrapped = optional!
let result = unwrapped/Double(1)/Double(1)
这种失败:
let rateForPeriod = (Double(1) as Double?)!/Double(1)/Double(1)
但这个作品:
let rateForPeriod = ((Double(1) as Double?)! as Double)/Double(1)/Double(1)
所以这个工程太:
let optional: Double? = 1
let rateForPeriod = optional! as Double/Double(1)/Double(1)
这似乎是新的可选解缠规则的副作用(可能错误)。
注意,这样做只有一个师在同一时间按预期工作:
let optional: Double? = 1
let rateForYear = optional!/Double(1)
let rateForPeriod = rateForYear/Double(1)
我们应该做什么?
- 提交错误报告
- 启闭力展开的东西
尝试看看,如果你能做出的InterestRate不可选,使用保护条款或给它这样的默认值: let rate = interestRate ?? 0
。
'interestRate'的类型? –
double type bro –
如果我这样写就好像错误消失了 var rateForPeriod = interestRate!/Double(100) rateForPeriod = rateForPeriod/Double(K.monthsEachYear) 是否正确的解决方法? –