迁移到swift3后嗨。我有这个问题吗?你的家伙知道什么是错的吗?
对成员“/”
的模糊引用let rateForPeriod = interestRate! / Double(100) / Double(K.monthsEachYear)
答案 0 :(得分: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
。
答案 1 :(得分:0)
如果我是你,我会使用可选绑定检查 interestRate 是否 nil 。
let interestRate: Double? = 0.4
if let interestRate = interestRate {
let rateForPeriod = interestRate / Double(100) / Double(1)
}