2016-09-21 73 views
3

迁移到swift3后喜欢。我有这个问题吗?你们的人知道什么是错的吗?swift3中的模糊引用

暧昧参考成员 “/”

let rateForPeriod = interestRate!/Double(100)/Double(K.monthsEachYear) 
+0

'interestRate'的类型? –

+0

double type bro –

+0

如果我这样写就好像错误消失了 var rateForPeriod = interestRate!/Double(100) rateForPeriod = rateForPeriod/Double(K.monthsEachYear) 是否正确的解决方法? –

回答

0

如果我是你,我会用可选结合检查的InterestRate是否与否。

let interestRate: Double? = 0.4 

if let interestRate = interestRate { 
    let rateForPeriod = interestRate/Double(100)/Double(1) 
} 
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