swift3中的模糊引用

时间:2016-09-21 04:56:11

标签: reference alamofire swift3 ambiguous

迁移到swift3后嗨。我有这个问题吗?你的家伙知道什么是错的吗?

对成员“/”

的模糊引用
let rateForPeriod = interestRate! / Double(100) / Double(K.monthsEachYear)

2 个答案:

答案 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)
}