2016-09-21 5 views
3

swift3への移行後のHi。私はこの問題を抱えていますか?あなたの人は何が間違っているのか分かりますか?swift3でのあいまいな参照

メンバーへのあいまいな参照に「/」

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

「interestRate」の種類? –

+0

ダブルタイプの仲間 –

+0

このように書くと、エラーが消えてしまったようです。 var rateForPeriod = interestRate!/Double(100) rateForPeriod = rateForPeriod/Double(K.monthsEachYear) これを修正する正しい方法はありますか? –

答えて

0

私があなただったら、私は利率ゼロであるかどうかをチェックするためにオプションの結合を使用します。

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) 

をすればよいですか?

  • 物事にあなたが利率は、任意でガード句を使用するか、それを次のようにデフォルト値を与えない作ることができるかどうかを確認するために

てみアンラップファイルバグレポートを

  • 停止力: let rate = interestRate ?? 0

  • 関連する問題