2016-09-21 71 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