Reference swift3中的模糊引用

Reference swift3中的模糊引用,reference,alamofire,swift3,ambiguous,Reference,Alamofire,Swift3,Ambiguous,迁移到swift3后,您好。我有这个问题?你们知道怎么回事吗 对成员“/”的引用不明确 如果我是你,我会使用可选绑定检查利率是否为nil let interestRate: Double? = 0.4 if let interestRate = interestRate { let rateForPeriod = interestRate / Double(100) / Double(1) } 祝贺你 您可能刚刚在编译器中发现了一个bug 让我们尝试一下代码的一些变体: 这失败了: le

迁移到swift3后,您好。我有这个问题?你们知道怎么回事吗

对成员“/”的引用不明确


如果我是你,我会使用可选绑定检查利率是否为nil

let interestRate: Double? = 0.4

if let interestRate = interestRate {
  let rateForPeriod = interestRate / Double(100) / Double(1)
}

祝贺你 您可能刚刚在编译器中发现了一个bug

让我们尝试一下代码的一些变体:

这失败了:

let optional: Double? = 1
let result = optional! / Double(1) / Double(1)
let rateForPeriod = (Double(1) as Double?)! / Double(1) / Double(1)
这项工作:

let optional: Double? = 1
let unwrapped = optional!
let result = unwrapped / Double(1) / Double(1)
let rateForPeriod = ((Double(1) as Double?)! as Double) / Double(1) / Double(1)
这失败了:

let optional: Double? = 1
let result = optional! / Double(1) / Double(1)
let rateForPeriod = (Double(1) as Double?)! / Double(1) / Double(1)
但这是可行的:

let optional: Double? = 1
let unwrapped = optional!
let result = unwrapped / 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)
这似乎是新的可选展开规则的副作用(可能是bug)

请注意,一次只执行一个分区的工作与预期的一样:

let optional: Double? = 1
let rateForYear = optional! / Double(1)
let rateForPeriod = rateForYear / Double(1)

我们该怎么办?

  • 提交错误报告
  • 不要强行拆开东西

试着看看是否可以使interestRate不是可选的,使用一个guard子句或给它一个如下的默认值:
let rate=interestRate??0

类型的
利率
?双类型的Bro如果我这样写var rateForPeriod=interestRate!/Double(100)rateForPeriod=rateForPeriod/Double(K.monthsEachYear)这是解决这个问题的正确方法吗?试着这样做
(利率!/Double(100))/Double(K.monthsEachYear)