Reference swift3中的模糊引用
迁移到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
如果我是你,我会使用可选绑定检查利率是否为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)